解题思路:类似于背包思路,画图以观察
注意事项:a[0][0]=1;理解成数量为0组成0的次数为1,以下类似,比如前1个数组成0的几率为1;
参考代码:
#include<bits/stdc++.h> using namespace std; const int MAX = 1001; int a[MAX][MAX]; int b[MAX]; int main() { int n, t; cin >> n >> t; for (int i = 1; i <= n; i++) { cin >> b[i]; } a[0][0] = 1; for (int i = 1; i <= n; i++) { for (int j = 0; j <= t; j++) { if (b[i] > j) a[i][j] = a[i - 1][j]; else { a[i][j] = a[i - 1][j] + a[i-1][j - b[i]]; } } } /* for (int i = 0; i <= n; i++) { for (int j = 0; j <= t; j++) { cout << a[i][j]; if (j==t) cout << endl; } } */ //输出测试观察 cout << a[n][t]; }
0.0分
53 人评分
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:277 |
【出圈】 (C语言代码)浏览:802 |
WU-字符串比较 (C++代码)浏览:764 |
WU-链表数据求和操作 (C++代码)浏览:1325 |
WU-C语言程序设计教程(第三版)课后习题12.1 (C++代码)浏览:943 |
1012题解浏览:875 |
星期判断机 (C语言代码)浏览:860 |
Hello, world! (C语言代码)浏览:839 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:520 |
敲七 (C++代码)浏览:1059 |