F - LJJ王国的数学家 递归

两盒软妹~` 提交于 2020-01-14 00:06:54

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)
{
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);
n=b;
m=c;
f(n,m);
return 0;
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!