• c++非STL全排列


    #include <cstdio>  
    #include <vector>  
    #include <string>  
    #include <iostream>  
    #include <algorithm>  
    using namespace std;  
        
    void permutation(vector<char> &res,string &str,vector<int> &used)  
    {  
      if(res.size()==str.length())  
      {  
        for(int i=0;i<res.size();++i)  
          printf("%c",res[i]);  
        printf("
    ");  
        return;  
      }  
      for(int i=0;i<str.length();++i)  
      {  
        if(used[i] || (i!=0 && str[i]==str[i-1] && used[i-1]))  
          continue;  
        used[i]=1;  
        res.push_back(str[i]);  
        permutation(res,str,used);  
        used[i]=0;  
        res.pop_back();  
      }  
    }  
        
    int main()  
    {  
      string strin;  
      while(cin>>strin)  
      {  
        vector<int> used(10,0);  
        sort(strin.begin(),strin.end());  
        vector<char> res;  
        permutation(res,strin,used);  
      }  
      return 0;  
    }  
    /**************************************************************
        Problem: 1369
        User: jasonhaven
        Language: C++
        Result: Accepted
        Time:500 ms
        Memory:1520 kb
    ****************************************************************/

  • 相关阅读:
    Add Two Numbers
    Same Tree
    Single Number
    题目1190:大整数排序
    题目1182:统计单词
    题目1181:遍历链表
    题目1180:对称矩阵
    题目1179:阶乘
    题目1206:字符串连接
    HTML事件
  • 原文地址:https://www.cnblogs.com/jasonhaven/p/7355034.html
Copyright © 2020-2023  润新知