2196: 【排列组合问题】排列组合问题发表时间:2022-10-28 23:23 2196: 【排列组合问题】排列组合问题 时间限制: 1 Sec 内存限制: 64 MB 题目描述 “心无界则天地宽,当狂风在你耳边呼啸时,你只当它微风拂面;当暴雨在你眼前倾泻时,你只当它细雨绵绵;当闪电在你头顶肆虐时,你只当它萤火流逝。人,绝不能在逆境面前屈服 ……哎,不说了,又到做操时间了,再晚典狱长要骂人了。” 输入 一个整数即n。 输出 输出每种方案,每种方案各占一行(字典序)。最后一行为方案数。 样例输入 Copy 2 样例输出 Copy 12 21 2
解析:递归算法。用ans记录答案,程序如下:
#include<bits/stdc++.h> using namespace std; int n,tot; bool a[10005]; int ans[10005]; void dfs(int j){ if(j>n){ for(int i=1;i<=n;i++) printf("%d",ans[i]); tot++;printf("\n"); return; } for(int i=1;i<=n;i++) if(!a[i]){ ans[j]=i;a[i]=1; dfs(j+1); a[i]=0; } } int main(){ memset(a,0,sizeof(a)); cin>>n;tot=0; dfs(1); cout<<tot<<endl; return 0; } 上一篇1353: 背包问题
下一篇2190: 【递归】冲突
文章分类:
算法例题
|