急!在线等编程答案
ProblemDescription把数字4拆分成若干个整数,有多少种分法呢(1、3和3、1是同一种分法)?例:4可以拆分成:1、1、1、12、1、12、23、1共4种拆...
Problem Description
把数字4拆分成若干个整数,有多少种分法呢(1、3和3、1是同一种分法)?
例:
4可以拆分成:1 、1、1、1
2、1、1
2、2
3、1
共4种拆法。
Input
第一行输入为一个正整数T,为测试数据的个数(1〈T〈100)。
每组测试数据为一个正整数M(10〈M〈50)。
Output
对于每个测试数据,分别输出其拆法数。
Sample Input
4
1
2
49
4
Sample Output
0
1
173524
4 展开
把数字4拆分成若干个整数,有多少种分法呢(1、3和3、1是同一种分法)?
例:
4可以拆分成:1 、1、1、1
2、1、1
2、2
3、1
共4种拆法。
Input
第一行输入为一个正整数T,为测试数据的个数(1〈T〈100)。
每组测试数据为一个正整数M(10〈M〈50)。
Output
对于每个测试数据,分别输出其拆法数。
Sample Input
4
1
2
49
4
Sample Output
0
1
173524
4 展开
1个回答
展开全部
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int count(int n, int a)
{
if(n/2 < a)
{
return 0;
}
int val = 1;
int j = (n - a)/2;
for(int i = a; i <= j; i++)
{
val += count(n-a, i);
}
return val;
}
int count(int n)
{
int val = 0;
int j = n/2;
for(int i = 1; i <= j; i++)
{
val += count(n, i);
}
return val;
}
int main(void)
{
int times;
cin >> times;
int *a = (int *)malloc(times * sizeof(int));
for(int i = 0; i < times; i++)
{
cin >> a[i];
}
for(int i = 0; i < times; i++)
{
cout << count(a[i]) << endl;
}
return 1;
}
using std::cin;
using std::cout;
using std::endl;
int count(int n, int a)
{
if(n/2 < a)
{
return 0;
}
int val = 1;
int j = (n - a)/2;
for(int i = a; i <= j; i++)
{
val += count(n-a, i);
}
return val;
}
int count(int n)
{
int val = 0;
int j = n/2;
for(int i = 1; i <= j; i++)
{
val += count(n, i);
}
return val;
}
int main(void)
{
int times;
cin >> times;
int *a = (int *)malloc(times * sizeof(int));
for(int i = 0; i < times; i++)
{
cin >> a[i];
}
for(int i = 0; i < times; i++)
{
cout << count(a[i]) << endl;
}
return 1;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询