1 条题解

  • 0
    @ 2025-4-12 21:41:02

    C++ :

    #include<cstdio>
    int f[20001],a[40],v,n,i,j;
    main(){
        scanf("%d%d",&v,&n);
        for(i=1;i<=n;i++)scanf("%d",&a[i]);
        for(i=1;i<=v;i++)f[i]=0; f[0]=1;
        for(i=1;i<=n;i++)for(j=v;j>=a[i];j--)
        if(f[j]==0)if(f[j-a[i]]==1)f[j]=1;
        for(i=v;i>=0;i--)if(f[i]==1)break;
        printf("%d\n",v-i);}
    

    Pascal :

    var f:array[0..200000] of boolean;
        c:array[1..30] of longint;
        i,j,n,v:longint;
    begin
      readln(v,n);
      fillchar(f,sizeof(f),false);
      for i:=1 to n do
        read(c[i]);
      f[0]:=true;
        for i:=1 to n do
          for j:=v downto c[i] do
            f[j]:=f[j-c[i]] or f[j];
        for i:=v downto 0 do
          if f[i] then
            begin
              writeln(v-i);
              break;
            end;
    end.
    
    • 1

    信息

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