组合的输出 题解(lgP1157)
一看就是 dfs 然而窝并不会做
调了一个多小时才调出来。漏洞连篇。(第一次写的基本没有对的地方QAQ
题解见注释。
#include<bits/stdc++.h> using namespace std; int n,r,ans[22]; void dfs(int a,int b)//a 表示当前 dfs 到第 a 位, b 表示当前选了 b-1 个数。 { if(b>r)//注意不要写等号 { for(int i=1;i<=r;i++) { printf("%3d",ans[i]);//输出答案 } cout<<endl;//别忘了换行 return; } for(int i=a;i<=n;i++) { ans[b]=i;//选择第 b 个数 dfs(i+1,b+1); } return; } int main() { cin>>n>>r; dfs(1,1); return 0; }
本文来自博客园,作者:樱雪喵,转载请注明原文链接:https://www.cnblogs.com/ying-xue/p/solution-lgP1706.html