2 solutions
-
3
思路:
从第一个元素开始递归递增枚举 用一个结构体存次数和结果 最后输出即可
#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
简单亿点
#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