2 solutions

  • 3
    @ 2024-3-9 17:02:34

    思路

    从第一个元素开始递归递增枚举 用一个结构体存次数和结果 最后输出即可

    #include<bits/stdc++.h>
    using namespace std;
    int n,t;
    int a[25];
    int ans=0;
    int r=0;
    struct f{
    	int data=0;
    	int ti=2;
    }vst[1005];
    void cnt(int sum,int times){
    	if(times>=n){
    		vst[times].ti=times;
    		return;
    	}else if(sum==t){
    		ans++,sum=0;
    		return;
    	}else{
    		for(int i=times+1;i<n;i++){
    			if(vst[i].data==0) cnt(sum+a[i],times+1);
    			else cnt(sum+vst[i].data,times+vst[i].ti);
    		}
    		vst[times].data=sum;if(ans&&r<=1) ans++,r++;
    	}
    }
    int main(){
    	cin>>n>>t;
    	for(int i=0;i<n;i++){
    		cin>>a[i];
    		if(a[i]==t) ans++;
    	}
    	cnt(1,0);
    	
    	cout<<ans<<"\n";
    	return 0;
    }
    

    骗过的,不会骗分的可以来学习一下方法 这道题输出0可以得90分

  • 1
    @ 2024-3-30 22:27:00

    简单亿点

    #include <bits/stdc++.h>
    using namespace std;
    int dp[1001];
    int w[100];
    
    int as(int n,int m){
    	for(int i = 1;i <= n;i++){
    		for(int j = m;j >= w[i];j--){
    			dp[j] = dp[j] + dp[j - w[i]]; 
    		}
    	}
    		return dp[m];
    }
    int main(){
    	int n , m;
    	cin >> n >> m;
    	for(int i = 1;i <= n;i++)
    		cin >> w[i];
    	dp[0] = 1;
    	cout << as(n , m);
    	return 0;
    }
    
    • 1

    Information

    ID
    776
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    6
    Tags
    # Submissions
    36
    Accepted
    12
    Uploaded By