1 条题解
-
0
C :
#include "stdio.h" int n,s; int a[50],f[50001]; int main() { int i,j; scanf("%d",&n); s=0; for(i=0;i<n;i++) { scanf("%d",&a[i]); s+=a[i]; } if(s%2) printf("0\n"); else { f[0]=1; s/=2; for(i=0;i<n;i++) { for(j=s;j>=a[i];j--) if(f[j-a[i]]) f[j]+=f[j-a[i]]; } printf("%d\n",f[s]/2); } return 0; }
C++ :
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int dp[51][3010], p[55]; int main() { // freopen("a.txt","r",stdin); int n, i, j, k; while(cin >> n) { memset(dp,0,sizeof(dp)); int sum(0); for(i = 1; i <= n; ++ i) { cin >> p[i]; sum += p[i]; } if(sum % 2) { cout << '0' << endl; continue; } dp[0][0] = 1; for(i = 1; i <= n; ++ i) { for(j = 0; j <= sum/2; ++ j) { dp[i][j] = dp[i-1][j]; if(j - p[i] >= 0) dp[i][j] = dp[i][j] + dp[i-1][j-p[i]]; } } cout << dp[n][sum/2]/2 << endl; } return 0; }
- 1
信息
- ID
- 735
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者