2 条题解

  • 0
    @ 2025-3-8 15:16:42
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+5,INF=0x3f3f3f3f;
    typedef long long LL;
    int a,b[9];
    int ans;
    int main()
    {
    	cin>>a;
    	for(int i=1;i<=a;i++)b[i] = i;
    	do{
    		for(int i=1;i<=a;i++)printf("%5d",b[i]);
    		cout<<endl;
    	}while(next_permutation(b+1,b+a+1));
    	return 0;
    }
    
    • 0
      @ 2023-8-25 17:08:55
      #include <iostream>
      #include <cstring>
      #include <iomanip>
      using namespace std;
      const int maxn=1e6+10;
      int n;
      bool vis[maxn];
      int ans[maxn];
      void dfs(int dep){
      	//终止条件+输出 
      	if(dep==n+1){
      		for(int i=1;i<dep;i++){
      			cout<<setw(5)<<ans[i];
      		}
      		cout<<endl;
      	}
      	//枚举方案数 
      	for(int i=1;i<=n;i++){
      		//标记防止重复搜索 
      		if(!vis[i]){
      			vis[i]=1;//标记 
      			ans[dep]=i;//搜索当前层 
      			dfs(dep+1);//进入下一层 
      			vis[i]=0;//回溯,还原相关状态 
      		}
      	}
      }
      int main(){
      	cin>>n;
      	dfs(1);
      	return 0;
      }
      
      • 1

      信息

      ID
      2275
      时间
      1000ms
      内存
      256MiB
      难度
      4
      标签
      递交数
      145
      已通过
      71
      上传者