ecnu 2912 permutation

#include<bits/stdc++.h>
using namespace std;

const int maxN=10;
bool vis[maxN];
int per[maxN];
void permutation(int n,int cnt,int& res){
    if(cnt==n){
        res++;
        if(n>=8)return;
        for(int i=0;i<n;i++)printf("%d",per[i]);
        printf("\n");
        return;
    }
    for(int i=1;i<=n;i++)if(!vis[i]&&i!=cnt+1){
        vis[i]=true;
        per[cnt]=i;
        permutation(n,cnt+1,res);
        vis[i]=false;
    }
}

int main(){
    int t,n,res;
    scanf("%d",&t);
    while(t--){
        res=0;
        scanf("%d",&n);
        permutation(n,0,res);
        if(n>=8)printf("%d\n",res);
    }
}

猜你喜欢

转载自www.cnblogs.com/TAMING/p/9232209.html