求助大佬帮忙分析一下复杂度
查看原帖
求助大佬帮忙分析一下复杂度
181715
gjh303987897楼主2021/11/20 12:00
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#define maxn 25
using namespace std;
inline int read()
{
    int x=0,f=1; char ch=getchar();
    while(ch>'9'||ch<'0'){
        if(ch=='-') f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=(x<<3)+(x<<1)+(ch^48);
        ch=getchar();
    }
    return x*f;
}
int n,vis[maxn],ans;
void dfs(int x){ 
    for(int i=1;i<=n;i++){
        if(vis[i]==0&&i!=x){
            vis[i]=1;
            if(x==n){
                ans++; vis[i]=0; return;
            }else dfs(x+1);
            vis[i]=0;
        }
    }
}
int main()
{
    memset(vis,1,sizeof(vis));
    n=read(); for(int i=1;i<=n;i++) vis[i]=0;
    dfs(1);
    cout<<ans;
    return 0;
}
2021/11/20 12:00
加载中...