自然数的拆分问题(lgP2404)
dfs。又调了一个小时,窝果然菜
需要传递的变量分别为目前搜索的数字;目前所有选中数字的和;目前所选数字个数。
见注释。
#include<bits/stdc++.h> using namespace std; int n,ans[1001];//题面似乎没给数据范围。。。 void dfs (int a,int sum,int num)//a目前搜索的数字;sum目前所有选中数字的和;num目前所选数字个数 { if (sum > n) return;//表示这种方案不满足题意 else if (sum == n)//满足题意,输出答案 { for(int i=1;i<num;i++) { cout<<ans[i]; if(i!=num-1) cout<<"+"; } cout<<endl; } for(int i = a;i < n;i ++)//一定不要写小于等于,因为这个问题调了很久qwq { ans[num] = i; dfs(i,sum + i,num + 1);//继续往下搜索 } return; } int main() { cin >> n; dfs(1,0,1); return 0; }
本文来自博客园,作者:樱雪喵,转载请注明原文链接:https://www.cnblogs.com/ying-xue/p/14017799.html