1 条题解

  • 0
    @ 2025-9-9 23:46:56

    C :

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

    C++ :

    #include <iostream>
    using namespace std;
    int f[20001];
    int main()
    {
     int V,n,i,j;
     cin>>V>>n;
     int a[n+1];
     for(i=1;i<=n;i++)
      cin>>a[i];
     for(i=1;i<=n;i++)
     {
      for(j=V;j>=1;j--)
      {
       if(j>=a[i])
        f[j]=max(f[j],f[j-a[i]]+a[i]);
      }
     }
     cout<<V-f[V];
     return 0;
    }
    
    
    
    
    • 1

    信息

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