求大神
将你输入的一个数字分解,输出它能分解的所有形式(不计算本身),并且不可以重复:不能出现;
5=1+1+1+25=2+1+1+1 只能有一个
5=5 不能出现
输入格式
n(1<=n<=100)
输出格式
n=m+m+m……(1<=m<n)
……
输入
5
输出
5=1+1+1+1+1
5=1+1+1+2
5=1+1+3
5=1+2+2
5=1+4
5=2+3
输入
6
输出
6=1+1+1+1+1+1
6=1+1+1+1+2
6=1+1+1+3
6=1+1+2+2
6=1+1+4
6=1+2+3
6=1+5
6=2+2+2
6=2+4
6=3+3
{:5_107:} #include <stdio.h>
void decompose(int n, int arr[], int k, const int t)
{
if(n <= 0)
{
if(arr == t)
return;
printf("%d=", t);
for(int i = 0; i < k-1; i++)
printf("%d+", arr);
printf("%d\n", arr);
return;
}
for(int i = n; i > 0; i--)
{
if(k > 0 && i > arr)
continue;
arr = i;
decompose(n-i, arr, k+1, t);
}
}
int main()
{
int a;
int n;
scanf("%d", &n);
decompose(n, a, 0, n);
return 0;
}
页:
[1]