F - LJJ王国的数学家
Description
想要成为LJJ王国的数学家,你要秒切这样一个问题:给定n和k,输出k个非负整数加和等于n的所有方案。(按字典序)
Input
两个整数分别为n和k。(0<k<=n<=10)
Output
按字典序输出所有方案。
Sample
Input
3 3
Output
3=0+0+3
3=0+1+2
3=0+2+1
3=0+3+0
3=1+0+2
3=1+1+1
3=1+2+0
3=2+0+1
3=2+1+0
3=3+0+0
实现代码:
#include<bits/stdc++.h>
using namespace std;
int a[108],b,c;
void f(int m,int n)//n为层数,m为求和数;
{
int i,j;
if(n==1)
{
a[n]=m;
printf("%d=",b);
for(i=c; i>=1; i--)
{
if(i>1) printf("%d+",a[i]);
else printf("%d\n",a[i]);
}
}
else
{
for(j=0; j<=m; j++)
{
a[n]=j;
f(m-j,n-1);
}
}
}
int main()
{
int n,m;
scanf("%d%d",&b,&c);
m=b;
n=c;
f(m,n);
return 0;
}