全排列(去重)
#include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> #include <algorithm> #define maxn 1005 using namespace std; char s[maxn],ans[maxn]; bool book[maxn]; int len,total; void dfs(int step) { if(step==len) { cout << ans << endl; total++; return ; } for(int i=0;i<len;i++) { if(book[i]==false) { int j; for(j=i+1;j<len;j++) { if(book[j]==true&&s[i]==s[j])//如果兩字元相同,且位置靠後的已經在前面,則有重複,不符合 break; } if(j==len) { book[i]=true; ans[step]=s[i]; dfs(step+1); book[i]=false; } } } } int main() { cin>>s; len=strlen(s); sort(s,s+len); memset(book,false,sizeof(book)); dfs(0); cout << total << endl; return 0; }
相關推薦
全排列(去重)
#include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> #
習題2.8 輸出全排列(20 分)浙大版《數據結構(第2版)》題目集
text ble 存在 base scripts html 數據 ext 運行時 請編寫程序輸出前n個正整數的全排列(n<10),並通過9個測試用例(即n從1到9)觀察n逐步增大時程序的運行時間。 輸入格式: 輸入給出正整數n(<10)。 輸出格
算法9-----輸出全排列(遞歸)
inpu 遞歸 col acc end return item AC urn 1、題目:給定一個字符串,輸出所有的字典序。 如: 輸入字符串:‘ac‘,輸出:[‘ac‘,‘ca‘] 輸入字符串:‘abc‘ ,輸出:[‘abc‘,‘acb‘,‘bac‘,‘bca‘,‘cab‘
演算法--全排列,去重全排列以及非遞迴實現
問題1: 給定字串1234無重複字元,求其所有排列 遞迴方式求解: def swap(num, i, j): tmp = num[i] num[i] = num[j] num[j] = tmp #num無重複數字 def fullSort(num, index)
遞迴:全排列(實力蒙)
#include <iostream> using namespace std; void swap(int &a,int &b) { int temp=a; a=b; b=temp; } void pai_xu(int a[]
distinct (去重)
在表中,可能會包含重複值。這並不成問題,不過,有時您也許希望僅僅列出不同(distinct)的值。關鍵詞 distinct用於返回唯一不同的值。 表A: 表B: 1.作用於單列 select distinct name from A 執行後結果如下:
leetcode:全排列(java回溯)
package LeetCode; import java.util.ArrayList; import java.util.List; /* 給定一個沒有重複數字的序列,返回其所有可能的全排列。 示例: 輸入: [1,2,3] 輸出: [ [1,2,3], [1,3,2], [2,1
List object[] 判斷是否有重複資料(去重)
方法1 List<Object[]> list2 = new ArrayList<Object[]>(); Map map = new HashMap<String, Ob
leetcode三數之和等於0(去重)
題目: 給定一個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組。 注意:答案中不可以包含重複的三元組。 例如, 給定陣列 nums = [-1, 0, 1, 2,
PTA 7-2 輸出全排列(20 分)
7-2 輸出全排列(20 分)請編寫程式輸出前n個正整數的全排列(n<10),並通過9個測試用例(即n從1到9)觀察n逐步增大時程式的執行時間。輸入格式:輸入給出正整數n(<10)。 輸出格式:輸出1到n的全排列。每種排列佔一行,數字間無空格。排列的輸出順序為字典
如何優雅的將多個數組合併成一個數組(去重)
思考如何寫一個方法將傳遞過來的多個未知個數的數組合併成一個數組並去除陣列中的重複項? 這裡會用到ES5的concat()方法和apply()方法,基礎的for迴圈方法這裡不進行闡述。 concat(arr1,arr2)方法接受多個數組元素,並將arr2中
劍指Offer.38 字串全排列(包含重複)
題目給定字串“abca”輸出其全部排列。分析:package 劍指Offer; import java.util.ArrayList; import java.util.List; public c
演算法學習——搜尋和C++ STL 實現全排列和去重全排列
全排列搜尋實現#include <iostream> #include <memory.h> using namespace std; int a[10001]; int b[1
輸出全排列(20 分)
請編寫程式輸出前n個正整數的全排列(n<10),並通過9個測試用例(即n從1到9)觀察n逐步增大時程式的執行時間。 輸入格式: 輸入給出正整數n(<10)。 輸出格式: 輸出1到n的全
7-2 輸出全排列(20 分)
7-2 輸出全排列(20 分) 請編寫程式輸出前n個正整數的全排列(n<10),並通過9個測試用例(即n從1到9)觀察n逐步增大時程式的執行時間。 輸入格式: 輸入給出正整數n(<
Mysql統計時間段內的使用者(去重)
SELECT b.* FROM vip_report_vip_income b INNER JOIN (SELECT * FROM (SELECT a.* FROM vip_report_vip_income a WHERE 1 = 1 AND a.
set集合(去重)
set的新增資料方法有二, 區別: add() 方法會將整個資料作為一項加入,而 update() 會將整個資料切分成單個字元逐一新增進 set() 集合 1、呼叫 update() 方法 >>> b=set() >>> b.upda
7-14 輸出全排列(20 分)
請編寫程式輸出前n個正整數的全排列(0),並通過9個測試用例(即n從1到9)觀察n逐步增大時程式的執行時間。 輸入格式: 輸入給出正整數n(<)。 輸出格式: 輸出1到n的全排列。每種排列佔一行,數字間無空格。排列的輸出順序為字典序,即序列a1,a
MapReduce實現資料清洗(去重)
上面是資料的格式 特徵碼#路徑(路徑裡面包括身份證號和姓名),我通過身份證號進行去重。 Map程式 public static class DistinctMaper extends Mapper<LongWritable, Text, Text, PeopleBe
演算法基礎:排列組合問題-全排列(Golang實現)
【排列組合問題】 一共N輛火車(0<N<10),每輛火車以數字1-9編號,要求以字典序排序輸出火車出站的序列號。 輸入: 包括N個正整數(0<N<10),範圍為1到9,數字之間用空格分割,字串首位不包含空格。 輸出: 輸出以字典