洛谷 P1706 全排列问题
Posted 一蓑烟雨任生平
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷 P1706 全排列问题相关的知识,希望对你有一定的参考价值。
题目描述
输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。
输入输出格式
输入格式:
n(1≤n≤9)
输出格式:
由1~n组成的所有不重复的数字序列,每行一个序列。每个数字保留5个常宽。
输入输出样例
输入样例#1: 复制
3
输出样例#1: 复制
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
思路:搜索
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int n,vis[10],cnt[10]; void dfs(int num){ if(num==n){ for(int i=1;i<=n;i++) printf("%5d",cnt[i]); cout<<endl; return ; } for(int i=1;i<=n;i++){ if(!vis[i]){ vis[i]=1; cnt[num+1]=i; dfs(num+1); vis[i]=0; } } } int main(){ scanf("%d",&n); dfs(0); }
以上是关于洛谷 P1706 全排列问题的主要内容,如果未能解决你的问题,请参考以下文章