1 条题解

  • 0
    @ 2025-4-7 21:19:29

    C :

    #include <stdio.h>
    int max(int a,int b)
    {
        return (a>=b?a:b);
    }
    int main()
    {
        int n,v,i,j,w[101],c[101],f[100001];
        while (scanf("%d %d",&v,&n)!=EOF)
        {
        for (i=1;i<=n;i++)
            scanf("%d %d",&c[i],&w[i]);
        for (i=0;i<=v;i++)
            f[i]=0;
        for (i=1;i<=n;i++)
            for (j=v;j>=c[i];j--)
                f[j]=max(f[j],f[j-c[i]]+w[i]);
        printf("%d\n",f[v]);
        }
        return 0;
    }
    
    

    C++ :

    #include <stdio.h>
    #include <string.h>
    //#include <windows.h>
    #define MAXSIZE 1001
    #define MAX(a,b) (((a)>(b))?(a):(b))
    int value[MAXSIZE],price[MAXSIZE];  //评价和价格
    int f[MAXSIZE][MAXSIZE];
    int main(int argc, char* argv[])
    {
    //  freopen("in.txt","r",stdin);
      //freopen("out.txt","w",stdout);
      int money,count;      //总额度money,总共点count个菜
      while(scanf("%d %d",&money,&count)!=EOF)
      {
        memset(f,0,sizeof(f));
        for(int i=1;i <= count;i++)
        {
          scanf("%d %d",&price[i],&value[i]);
        }
    
        for(int i=1;i <= count;i++)
        {
          for(int j=1;j <= money;j++)
          {
            if(price[i] <= j)        //当前物品的价格小于j
            {
              f[i][j] = MAX(f[i-1][j],f[i-1][j-price[i]]+value[i]);     //选择买不买当前物品i
            }
            else
            {
              f[i][j] = f[i-1][j];          //不买第i个菜
            }
          }
        }
        printf("%d\n",f[count][money]);
      }
    //  system("Pause");
      return 0;
    }
    
    

    Pascal :

    program co3;
     var
      c,m:longint;
      v,s:longint;
      i,j:longint;
      f:array[0..1001]of longint;
     begin
      while not eoln do
       begin
        fillchar(f,sizeof(f),0);
        readln(c,m);
        for i:=1 to m do
         begin
          readln(v,s);
          for j:=c downto v do
           if f[j]<f[j-v]+s then f[j]:=f[j-v]+s;
         end;
        writeln(f[c]);
       end;
     end.
    
    • 1

    信息

    ID
    1172
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者