#include "stdio.h"
int m[100][100];//存储列表
int p[100];//价值
int w[100];//重量
int n;//物品数量
int c;//总重量
int max(int a,int b)//比较大小
{
return (a>b)?a:b;
}
void bag()
{
for(int i=1;i<=c;i++)//从1开始
{
if(i>=w[i])
{
m[1][i]=p[0];
}
else
{
m[1][i]=0;
}
}
for(i=1;i<n;i++)
{
m[i][1]=0;
}//初始化存储列表
for(i=1;i<=n;i++)//简单的动态规划
for(int j=1;j<=c;j++)
{
if(j>=w[i])
{
m[i][j]=max(m[i-1][j-w[i]]+p[i],m[i-1][j]);
}
else
{
m[i][j]=m[i-1][j];
}
}
for(i=1;i<=n;i++)//打印
{
printf("第 %d 行: ",i);
for(int j=1;j<=c;j++)
{
printf("%d ",m[i][j]);
}
printf("\n");
}
}
void main()
{
printf("请输入总容量大小和物品总数\n");
scanf("%d %d",&c,&n);
printf("请输入各个物品重量和价值\n");
for(int i=1;i<=n;i++)
{
scanf("%d %d",&w[i],&p[i]);
}
bag();
}
1.越学到深就会越觉得简单的基础的最重要。
2 .这次写的速度和质量都有提高。
3. 有些问题可以从1开始进行考虑