6 solutions

  • 3
    @ 2024-3-6 16:52:00
    #include<iostream>
    #include<string>
    using namespace std;
    string a;
    bool in(char s,string y)
    {
    	for(int i=0;i<y.size();i++)
    	{
    		if(y[i]==s)
    		{
    			return true;
    		}
    	}
    	return false;
    }
    void f(int x,string s)
    {
    	if(x==a.size())//返回条件
    	{
    		cout<<s<<endl;//输出
    		return;//返回
    	}
    	for(int i=0;i<a.size();i++)//每个字母
    	{
    		if(!in(a[i],s))//是否有过
    		{
    			f(x+1,s+a[i]);//递归
    		}
    	}
    }
    int main()
    {
    	cin>>a;//输入
    	f(0,"");//递归
    	return 0;//完结散花
    }
    
    • 1
      @ 2024-10-23 16:49:46

      懂了

      //时间复杂度O(n^2) 
      //空间复杂度O(1) 
      #include<bits/stdc++.h>
      using namespace std;
      int n;
      string a, s;//a为输入,s为输出
      bool pos[7];//记录a对应位置的字符是否已用
      void Perm(int u) 
      {
          //如果s填满,则输出
          if (u == n) 
      	{
              cout << s << endl;
          }
          else
          {
              for (int i = 0; i < n; i++) 
      		{
                  //如果a的位置i还没用
                  if (pos[i] == false) 
      			{
                      s[u] = a[i];//用a[i]填s
                      pos[i] = true;//标记a[i]已用
                      Perm(u + 1);//填s的下一个位置
                      pos[i] = false;//复原,相当于s[u]位置不填a[i],用于填别的数。
                  }
              }
          }
      }
      int main() 
      {
          cin >> a;
          n = a.size();//用a初始化s,目的是给s初始化空间
          s = a;
          Perm(0);
          return 0;
      }
      
      • 1
        @ 2024-3-12 18:47:01
        #include<bits/stdc++.h>
        using namespace std;
        string a;
        int t;
        bool is(string n,char m){
        	for(int i=0;i<n.size();i++) if(n[i]==m) return false;
        	return true;
        }
        //判断是否重复 
        void A(string w){
        	if(w.size()==t) cout<<w<<"\n";
        	//若满足,输出填好的字符串 
        	else for(int i=0;i<t;i++) if(is(w,a[i])) A(w+a[i]);
        	//若不满足,递归填字母 
        }
        int main(){
        	cin>>a;
        	t=a.size();
        	A("");//从空串开始填 
        	return 0;
        }
        

        递归填字母即可

        • 0
          @ 2024-12-17 18:52:39
          #include<bits/stdc++.h>
          using namespace std;
          int n;
          bool ppp[7];
          string pppcin,pppcout;
          void ppppp(int x){
          	if(x==n)cout<<pppcout<<endl;
          	else for(int i=0;i<n;i++)if(ppp[i]==false){
          		ppp[i]=true;
          		pppcout[x]=pppcin[i];
          		ppppp(x+1);
          		ppp[i]=false;
          	}
          }
          int main(){
          	cin>>pppcout;
          	pppcin=pppcout;
          	n=pppcout.size();
          	ppppp(0);
          	return 0;
          }
          
          • 0
            @ 2023-10-28 16:25:15
            using namespace std;
            string s;
            int n;
            bool vis[100005];
            char ans[100005];
            void dfs(int dep){ 
            	if(dep == s.size()+1){
            		for(int i = 1;i < dep;i++){
            			cout << ans[i];
            		}
            		cout << endl;
            	}
            	for(int i=0;i<s.size();i++){
            		if(!vis[i]){
            			vis[i] = 1; 
            			ans[dep] = s[i];
            			dfs(dep + 1);
            			vis[i] = 0;
            		}
            	}
            }
            int main(){
            	cin >> s;
            	dfs(1);
            	return 0;
            }`
            
          • -7
            @ 2023-12-23 21:26:38
            #include <bits/stdc++.h>
            using namespace std;
            string s;
            int n;
            bool vis[100005];
            char ans[100005];
            void dfs(int dep){ 
            	if(dep==s.size()+1){
            		for(int i=1;i<dep;i++) cout<<ans[i];
            		cout<<endl;
            	}
            	for(int i=0;i<s.size();i++){
            		if(!vis[i]){
            			vis[i] = 1; 
            			ans[dep]=s[i];
            			dfs(dep+1);
            			vis[i]=0;
            		}
            	}
            }
            int main(){
            	cin>>s;
            	dfs(1);
            	return 0;
            }
            
          • 1

          Information

          ID
          685
          Time
          1000ms
          Memory
          256MiB
          Difficulty
          4
          Tags
          # Submissions
          123
          Accepted
          53
          Uploaded By