#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) 回复
不错
回复评论