3 条题解

  • 0
    @ 2026-9-12 21:08:16
    #include <iostream>
    using namespace std;
    int x;
    int a[1005];
    bool b[1005];
    void dfs(int step){
      if(step > x){
        for(int i = 1; i <= x; i ++){
          cout << "    " << a[i];  
        }
        cout << endl;
        return;  
      }  
      for(int i = 1; i <= x; i ++){
        if(!b[i]){
          a[step] = i;  
          b[i] = true;
          dfs(step + 1);
          b[i] = false;
        }
      }
    }
    int main() {
        cin >> x;
        dfs(1);
        return 0;
    }
    
    
    • 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
        标签
        递交数
        183
        已通过
        90
        上传者