王孟晖吧 关注:2贴子:34
  • 5回复贴,共1

标题要长长长长长长长长长长长长长长长长长长长长长长长长长长长长

只看楼主收藏回复

您真是清晰不堪啊!
我发现您的资料里最欣赏的人是王孟晖啊


1楼2009-10-16 23:02回复
















    2楼2009-10-16 23:04
    回复
      #include<iostream>
      using namespace std;
      int a[1001],f[1001][1001],totalw,n;
      void output(int x,int y)
      {
          if(x <= 0)
              return;
          if(y < a[x])
          {
              output(x - 1,y);
              printf("%d ",x);            
          }
          else if(f[x - 1][y] == 0)
          {
              output(x - 1,y - a[x]);    
              //printf("%d ",x);
          }    
          else
          {
              output(x - 1,y);
              printf("%d ",x);
          }
      }
      int main()
      {
          f[0][0] = 1;
          scanf("%d%d",&totalw,&n);
          for(int i = 1;i <= n;++i)
              scanf("%d",&a[i]);
          for(int i = 1;i <= n;++i)
              for(int j = 0;j <= totalw;++j)
              {
                  if(j < a[i])
                      f[i][j] = f[i - 1][j];
                  else
                      f[i][j] = f[i - 1][j] + f[i - 1][j - a[i]];
              }
          if(f[n][totalw] == 1)
              output(n,totalw);
          else if(f[n][totalw] == 0)
              printf("0");
          else 
              printf("-1");
          /*for(int i = 1;i <= n;++i)
          {
              for(int j = 1;j <= totalw;++j)
                  cout << f[i][j] << " ";
              cout << endl;    
          }*/
          cout << endl;
          system("pause");
          return 0;    
      }


      3楼2009-10-16 23:04
      回复
        我虚假清晰啊


        4楼2009-10-16 23:04
        回复
          在百度真是很正确啊。看来是vijos呆逼了啊


          5楼2009-10-16 23:05
          回复
            您可以烟究一下这个问题啊


            6楼2009-10-16 23:11
            回复