我们要求找出具有下列性质数的个数包含输入的自然数 n先输入一个自然数 nn≤1000然后对此自然数按照如下方法进行处理1不作任何处理;2在它的左边加上一个自然数但该自然数不能超过原数的一半;3加上数后继续按此规则进行处理直到不能再加自然数为止。输入样例 6输出样例 6用c++编写代码编写完后将输入样例代入验证输出是否与输出样例一致
#include
int count(int n, int max_add) { if (n == 0) return 1; // 递归边界,空集合也算一种情况 int res = 0; for (int i = 1; i <= max_add && i <= n; i++) { // 枚举加上的数 res += count(n - i, i); // 递归处理剩余部分,注意第二个参数是 i,表示下一次加上的数不能超过 i } return res; }
int main() { int n; cin >> n; cout << count(n, n) << endl; return 0; }
原文地址: https://www.cveoy.top/t/topic/bb8V 著作权归作者所有。请勿转载和采集!