2 solutions

  • 1
    @ 2024-3-31 22:16:46

    简单点

    #include <bits/stdc++.h>
    using namespace std;
    long long v , n , h[30] , dp[10005] = {1};
    int main(){
    	cin >> v >> n;
    	for(int i = 0;i < v;i++){
    		cin >> h[i];
    	}
    	for(int i = 0;i < v;i++){
    		for(int j = h[i];j <= n;j++){
    			dp[j] += dp[j - h[i]];
    		} 
    	}
    	cout << dp[n];
        return 0;
    }
    
    • 1
      @ 2024-3-30 22:50:22
      #include<iostream>
       using namespace std;
       const int maxn = 10000+10;
       long long d[maxn],a[30];
       int N,V;
       int main() {
           cin>>N>>V;
           for(int i=1;i<=N;i++) cin>>a[i];
           for(int i=0;i*a[1]<=V;i++) d[i*a[1]]=1;
           for(int i=2;i<=N;i++)
              for(int j=a[i];j<=V;j++)
                 d[j] += d[j-a[i]];
                 
           cout<<d[V];
           return 0;
       }
      
      • 1

      Information

      ID
      1049
      Time
      1000ms
      Memory
      125MiB
      Difficulty
      7
      Tags
      # Submissions
      20
      Accepted
      8
      Uploaded By