贪心算法举例,并用c++写出来
时间: 2023-03-01 17:01:49 浏览: 32
贪心算法是一种在每一步选择中都采取在当前状态下最优解的策略,以期望在结束时得到全局最优解的一种算法。下面是一个典型的贪心算法的例子:求背包问题的最优解。
假设有一个背包容量为 W 的背包,有 n 件物品,第 i 件物品的重量为 w[i],价值为 v[i]。现在需要从这 n 件物品中选出一些物品装到背包中,使得背包内物品的总价值最大。
下面是用C语言写的一个贪心算法的代码实现:
```
#include<stdio.h>
#include<stdlib.h>
#define N 100
int n,W;
int w[N],v[N];
int x[N];
int ans;
int cmp(const void *a,const void *b)
{
return *(int*)b-*(int*)a;
}
void greedy()
{
int i,j;
for(i=0;i<n;i++)
{
if(w[i]>W)
continue;
x[i]=1;
W-=w[i];
ans+=v[i];
}
}
int main()
{
int i,j;
scanf("%d%d",&n,&W);
for(i=0;i<n;i++)
{
scanf("%d%d",&w[i],&v[i]);
}
qsort(w,n,sizeof(w[0]),cmp);
qsort(v,n,sizeof(v[0]),cmp);
greedy();
printf("%d\n",ans);
return 0;
}
```
在上面的代码中,首先对物品的重量和价值进行排序,然后依次选择重量最小且价值最大的物品,并将其加入
阅读全文