[c]代码库
#include <stdio.h>
#include <stdlib.h>
#define MAXNUM 1000//最大的箱子个数
#define MAXWIGHT 3000//
int n;//箱子数目
int F[MAXNUM+1][6000];//第i个箱子到第n个箱子中总重量为j的最大箱子数
int Weight[MAXNUM];//箱子重量
int Capacity[MAXNUM];//箱子所能承受的压力
int max(int ,int );
//返回两个数的最大值
int main()
{
int i,j,ans;
printf("输入箱子的个数n(1-1000):\n");;
scanf("%d",&n);
printf("分别输入箱子的重量和能承受的重量(x y):\n");
for(i=1; i<=n; i++)
scanf("%d %d",&Weight[i],&Capacity[i]);
F[n+1][0] = 0;
for(i=n; i>=1; i--)
{
for(j=0; j<=2*MAXWIGHT; j++)
{
F[i][j]=F[i+1][j];
if(j>=Weight[i]&&Capacity[i]>=j-Weight[i])
{
F[i][j]=max(F[i][j],F[i+1][j-Weight[i]]+1);
}
}
}
ans=0;
for(i=0; i<=6000; i++)
ans = max(ans,F[1][i]);
printf("最大叠放:%d",ans);
return 0;
}
int max(int x,int y)
{
if(x>y)
return x;
else
return y;
}
初级程序员
by: 云代码会员 发表于:2015-06-19 15:22:59 顶(0) | 踩(0) 回复
不错
回复评论