zoukankan      html  css  js  c++  java
  • 使用DFS生成全排列

     1 #include <string>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 #include <iostream>
     5 #include <algorithm>
     6 
     7 using namespace std;
     8 
     9 // 使用DFS深度优先搜索生成全排列
    10 // 如果当前生成的排列满足条件(逻辑意义上的有序),返回true
    11 bool dfs(string &bunch, int bLen, string str) {
    12     if (bLen == str.length()) {
    13             // 
    14     }
    15     
    16     string::size_type i;
    17     for (i = 0; i < bLen; ++i) {
    18         if (!vis[i]) {
    19             vis[i] = true;
    20             str += bunch[i];
    21             if (dfs(bunch, bLen, str)) {
    22                 return true;
    23             }
    24             vis[i] = false;
    25             str = str.substr(0, str.length() - 1);
    26         }
    27     }// End of for
    28     return false;
    29 }
    30 
    31 int main() {
    32     string bunch;
    33     
    34     while (cin >> bunch) {
    35         dfs(bunch, bunch.length(), "");
    36     }// End of while
    37     return 0;
    38 }


    方法二:使用STL中的next_permutation生成

     1 #include <string>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 #include <iostream>
     5 #include <algorithm>
     6 
     7 using namespace std;
     8 
     9 string res;
    10 
    11 int main() {
    12     string bunch;
    13     
    14     while (cin >> bunch) {
    15         sort(bunch.begin(), bunch.end());
    16         do {
    17             cout << bunch << endl;
    18         } while (next_permutation(bunch.begin(), bunch.end()));
    19     }// End of while
    20     return 0;
    21 }


     

  • 相关阅读:
    05docker仓库---搭建本地仓库
    04docker容器操作
    03docker镜像
    02docker核心概念
    01docker基本概念
    find命令
    docker中ubuntu源更新慢加速 换为国内源 Debian10源
    计划任务 at & crond tbc
    mysql mysqladmin常用命令
    mariadb10安装
  • 原文地址:https://www.cnblogs.com/yewei/p/2809161.html
Copyright © 2011-2022 走看看