TYVJ 1016 装箱问题 by C++

用了个很笨的办法~ 

同时学会了使用string.h里的memset

   1: #include<iostream>
   2: #include<string.h>
   3: using namespace std;
   4: const int maxv=2000000;
   5: int v[maxv]={0};
   6: bool can[maxv]={0};
   7: int n=0,totv=0;
   8:  
   9: void get_input()
  10: {
  11:     memset(can,0,sizeof(can));
  12:     can[0]=1;
  13:     cin >> totv;
  14:     cin >> n;
  15:     for (int i=0;i<n;i++) cin >> v[i];
  16: }
  17:  
  18: int work()
  19: {
  20:     for (int i=0;i<n;i++)
  21:         for (int j=totv+1;j>=0;j--){
  22:             if (can[j]) can[j+v[i]]=true;
  23:         }
  24:     for (int i=totv;i>=0;i--) if (can[i]) return i;
  25: }
  26:  
  27: int main()
  28: {
  29:     get_input();
  30:     cout << totv-work() << endl;
  31: }
posted @ 2012-07-07 20:20  NoRush  阅读(1184)  评论(0编辑  收藏  举报