全排列問題(DFS求解 | STL函式)
1.利用dfs求全排列
#include <cstdio> #include <iostream> #include <algorithm> using namespace std; const int maxn = 100; int vis[maxn]; int a[maxn]; int cnt; int dfs(int n) { if(cnt == n) { for(int i = 1; i < n; i++) cout<<a[i]<<" "; cout<<a[n]<<endl; } for(int i = 1; i <= cnt; i++) { if(!vis[i] ) { vis[i] = 1; a[n+1] = i; dfs(n+1); vis[i] = 0; } } } int main() { cin>>cnt; dfs(0); return 0; }
2.利用stl自帶函式求
bool next_permutation(iterator start, iterator end);
next_permutation函式的返回值是布林型別
next_permutation()函式功能是輸出所有比當前排列大的排列,順序是從小到大。
prev_permutation()函式功能是輸出所有比當前排列小的排列,順序是從大到小。
#include <bits/stdc++.h> using namespace std; int main(){ string str="abc"; while(next_permutation(str.begin(),str.end())) cout<<str<<endl; return 0; }
相關推薦
全排列問題(DFS求解 | STL函式)
1.利用dfs求全排列 #include <cstdio> #include <iostream> #include <algorithm> using namespace std; const int maxn = 100; int v
CodeVS 1294 全排列(dfs)
spl pan ref blog mes pac targe amp open 題目: http://codevs.cn/problem/1294/ 代碼(用cout 會超時!!!): #include <iostream> #include<cs
全排列(dfs)
#include <stdio.h> #include <stdlib.h> char data[6] = {'A','B','C','D','E','F'}; char data1[6]; int count=0; bool isSafe(i
15. 全排列(DFS)
程式碼:class Solution { public: /* * @param nums: A list of integers. * @return: A list of permutations. */ vector<vector<int>
1- n , n個數的全排列(dfs)
這個模板呢可以應用於許多地方,例如:一串字元的全排列;或者給你一段字元或者數字,然後讓你找到一組或者多組滿足特定要求的 排列;給你一組數, 然後讓你求相鄰兩個數有特定關係的排列:等等許多類似的問題都可以通過下面這個求解n個數的全排列程式碼 來改變,可以都過新增以
全排列(遞迴與函式實現)
Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s
字串全排列(效能分析Java版)
具體的思路我就不寫了,借用網上的一張圖來表示: 我的程式碼如下: import java.util.*; public class Solution { public ArrayList<String> Permutation(String str
全排列(next_permutation,遞迴)
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; in
LeetCode-46.全排列(考察點:回溯演算法)
給定一個沒有重複數字的序列,返回其所有可能的全排列。 示例: 輸入: [1,2,3] 輸出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 解題思路:這個...感覺很難講明白,
題15:全排列(不帶重複元素)
題目描述: 給定一個數字列表,返回其所有可能的排列。 例如: 給出一個列表[1,2,3],其全排列為: [ [1, 2, 3], [1, 3, 2], [2, 1, 3]
全排列的兩種解法(dfs和STL)
#include #include using namespace std; char str[15]; int main() { int n,i,j; while(scanf("%d",&n)!=EOF) { for
全排列 (遞歸求解+字典序) java 轉載
解決 nbsp 介紹 轉載 imp dict 問題 描述 clas 問題:給出一個字符串,輸出所有可能的排列。 全排列有多種算法,此處僅介紹常用的兩種:字典序法和遞歸法。 1、字典序法: 如何計算字符串的下一個排列了?來考慮"926520"這個字符串,我們從後向前找第一雙相
牛客網NowCoder 2018年全國多校算法寒假訓練營練習比賽(第四場)A.石油采集(dfs) B.道路建設(最小生成樹prim) C.求交集(暴力) F.Call to your teacher(迪傑斯特拉亂用) H.老子的全排列呢(dfs)
初始 -o 地圖 意義 技術 tle bject ios urn 菜哭了。。。 A.石油采集 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 鏈
全排列(STL)
c++ namespace using can ext setw spa mes 是不是 輸入一個整數n,輸出1~n的全排列(是不是很水) 在此記錄stl做法 #include<bits/stdc++.h> using namespace std;
【萬能搜尋】萬能DFS之全排列(一)——普通演算法
DFS相信大家都很熟悉,下面就給出一種用DFS實現的演算法。 全排列 大家對於全排列是很熟悉的,比如123的全排列就有: 123 132 213 231 312 321 這六種。 現在,我們來設計一個演算法,來
深度優先搜尋dfs之1到n的全排列(收藏)
/******** *給你一個數n,輸出1到n的全排列 *深度優先搜尋 ********/#include <stdio.h>#include <stdlib.h>int book[10], a[10], n; void dfs(int step)
用DFS輸出n個數的全排列(遞迴實現)
最近在研究DFS,可能腦子不太夠吧,很多題都不知道怎麼實現,全排列應該是最簡單的題了。執行成功的程式碼如下所示:#include<stdio.h> #include<iostream> #include<string.h> using na
nyist oj 19 擅長排列的小明(dfs搜尋+STL)
擅長排列的小明 時間限制:1000 ms | 記憶體限制:65535 KB 難度:4 描述 小明十分聰明,而且十分擅長排列計算。比如給小明一個數字5,他能立刻給出1-5按字典序的全排列,
全排列(洛谷1061 Jam的計數法or NOIP 2006 普及組 第三題)
div 順序 pre highlight 格式 其中 字符 是個 true Jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小寫英文字母計數,他覺得這樣做,會使世界更加豐富多彩。 在他的計數法中,每個數字的位數都是相同的(使用相同個數的字母),英文字母按
習題2.8 輸出全排列(20 分)浙大版《數據結構(第2版)》題目集
text ble 存在 base scripts html 數據 ext 運行時 請編寫程序輸出前n個正整數的全排列(n<10),並通過9個測試用例(即n從1到9)觀察n逐步增大時程序的運行時間。 輸入格式: 輸入給出正整數n(<10)。 輸出格