标签:LJJ 递归 int dfs ny Input ceng
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 ny,k;
void dfs(int n,int ceng,int *dp)
{
if(ceng==k&&n==0)//递归边界,如果已经有k份了,并且数字加起来为n
{
printf("%d=",ny);
for(int i=0;i<k-1;i++)
{
printf("%d+",dp[i]);
}
printf("%d\n",dp[k-1]);
return;
}
if(ceng==k&&n!=0)//递归边界不满足则返回上一层
{
return;
}
for(int i=0;i<=n;i++)//所有可能
{
dp[ceng]=i;
dfs(n-i,ceng+1,dp);//递归
}
}
int main()
{
int dp[13]={0};
scanf("%d %d",&ny,&k);
dfs(ny,0,dp);
return 0;
}
king9666
发布了322 篇原创文章 · 获赞 123 · 访问量 2万+
私信
关注
标签:LJJ,递归,int,dfs,ny,Input,ceng 来源: https://blog.csdn.net/king9666/article/details/104149037
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。