用C语言写一个0-1背包问题的算法
时间: 2024-05-08 11:18:08 浏览: 76
好的,关于0-1背包问题的算法,以下是C语言代码:
```c
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
int max(int a, int b)
{
return (a>b)?a:b;
}
int knapsack(int n, int w[], int v[], int W)
{
int i,j;
int K[MAX][MAX];
for(i=0;i<=n;i++)
{
for(j=0;j<=W;j++)
{
if(i==0 || j==0)
K[i][j]=0;
else if(w[i-1]<=j)
K[i][j]=max(v[i-1]+K[i-1][j-w[i-1]], K[i-1][j]);
else
K[i][j]=K[i-1][j];
}
}
return K[n][W];
}
int main()
{
int n;
int w[MAX],v[MAX];
int W;
printf("请输入物品数量:");
scanf("%d",&n);
printf("请输入物品重量和价值:\n");
for(int i=0;i<n;i++)
{
scanf("%d %d",&w[i],&v[i]);
}
printf("请输入背包容量:");
scanf("%d",&W);
printf("背包能装的最大价值为:%d\n",knapsack(n,w,v,W));
return 0;
}
```
希望对你有帮助。如果您还有其他问题,请继续提出。
阅读全文