2019年华东师大高可信软件工程夏令营机试B题——附代码

mac2022-06-30  25

B. 整数划分

单点时限: 2.0 sec

内存限制: 512 MB

对于一个给定的正整数 n ,希望你能将它分成仅由数字 1 或 2 或 3 组成的和的形式,问有多少种划分方法。

举个例子: 4 可以被划分成 1+1+1+1 或 2+2 或 3+1 或 2+1+1 这 4 种形式,注意 1+3 和 3+1 视为同一种划分方法。

输入格式

有多组输入,每组输入由一行一个正整数 n 组成,题目保证 1≤n≤32767 ,保证数据组数不超过 200 组。

输出格式

对于每一个 n ,输出题目种所求的划分方法数,一行一个结果。

样例

input

4 5

output

4 5

input

2934 12553

output

718831 13137761

AC代码: 

// 本质考察完全背包模型 #include <iostream> using namespace std; const int N = 10010; int f[N]; int main() {     int m;     cin >> m;          int v[] = {0, 1, 2, 3};     f[0] = 1;  // 初始化空集为一种方案     for (int i = 1; i <= 3; i ++ ) {         for (int j = v[i]; j <= m; j ++) {             f[j] = f[j] + f[j - v[i]]; // 朴素做法:f[i][j] = f[i - 1][j] + f[i][j - v[i]]         }     }          cout << f[m] << endl;          return 0; }

 

 

 

 

最新回复(0)