写出c语言代码:题目描述将正整数n 表示成一系列正整数之和n=n1+n2+…+nk 其中n1=n2=…=nk=1 k=1 。正整数n 的这种表示称为正整数n 的划分。正整数n 的不同的划分个数称为正整数n 的划分数。输入标准的输入包含若干组测试数据。每组测试数据是一个整数N0 N = 50。输出对于每组测试数据输出N的划分数。样例输入5样例输出7
#include <stdio.h>
int partition(int n, int m) { if (n == 1 || m == 1) { // 只有1个数或只能选1时,只有一种情况 return 1; } if (n < m) { // n比m小,不能选比n更大的数,退化为n的划分数 return partition(n, n); } if (n == m) { // n等于m,包含只选1的情况 return partition(n, m - 1) + 1; } return partition(n, m - 1) + partition(n - m, m); }
int main() { int n; while (scanf("%d", &n) == 1) { printf("%d\n", partition(n, n)); } return 0; }
原文地址: https://www.cveoy.top/t/topic/ffqB 著作权归作者所有。请勿转载和采集!