[C] 叠放箱子问题 →→→→→进入此内容的聊天室

来自 , 2019-04-01, 写在 C, 查看 115 次.
URL http://www.code666.cn/view/72e6d323
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MAXNUM 1000//最大的箱子个数
  5. #define MAXWIGHT 3000//
  6. int n;//箱子数目
  7. int F[MAXNUM+1][6000];//第i个箱子到第n个箱子中总重量为j的最大箱子数
  8. int Weight[MAXNUM];//箱子重量
  9. int Capacity[MAXNUM];//箱子所能承受的压力
  10.  
  11. int max(int ,int );
  12. //返回两个数的最大值
  13.  
  14. int main()
  15. {
  16.     int i,j,ans;
  17.     printf("输入箱子的个数n(1-1000):\n");;
  18.     scanf("%d",&n);
  19.     printf("分别输入箱子的重量和能承受的重量(x y):\n");
  20.     for(i=1; i<=n; i++)
  21.         scanf("%d %d",&Weight[i],&Capacity[i]);
  22.  
  23.     F[n+1][0] = 0;
  24.     for(i=n; i>=1; i--)
  25.     {
  26.         for(j=0; j<=2*MAXWIGHT; j++)
  27.         {
  28.             F[i][j]=F[i+1][j];
  29.             if(j>=Weight[i]&&Capacity[i]>=j-Weight[i])
  30.             {
  31.                 F[i][j]=max(F[i][j],F[i+1][j-Weight[i]]+1);
  32.             }
  33.         }
  34.     }
  35.     ans=0;
  36.     for(i=0; i<=6000; i++)
  37.         ans = max(ans,F[1][i]);
  38.     printf("最大叠放:%d",ans);
  39.  
  40.     return 0;
  41. }
  42.  
  43. int max(int x,int y)
  44. {
  45.     if(x>y)
  46.         return x;
  47.     else
  48.         return y;
  49. }
  50.  

回复 "叠放箱子问题"

这儿你可以回复上面这条便签

captcha