1. 程式人生 > >洛谷 P1706 全排列問題

洛谷 P1706 全排列問題

個數 copy algorithm style 自然數 num 一個 col http

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 全排列問題