單點時限: 2.0 sec
記憶體限制: 256 mb
輸入乙個由字母組成的字串 s(1≤長度≤16),按字典序輸出由 s 中不同字元組成的所有字元組合(每個組合中的字元也按字典序排列)。
例如:cbaabc 中的不同字元是 a、b、c 共 3 個,則 1 個字元組成的組合是 a、b、c3 種,2 個字元組成的組合是 ab、bc、ac3 種,3 個字元組成的組合是 abc1 種。注意:ab 和 ba 由相同字元組合而成,因此可認為是同乙個組合。那麼這個例子共有 7 種組合,按序分別為 a、ab、abc、ac、b、bc、c。
輸入格式
第 1 行:乙個整數 t (1≤t≤10) 為問題數。
接下來共 t 行,每行輸入乙個長度不超過 16 的字串 s。
輸出格式
對於每個問題,輸出一行問題的編號(0 開始編號,格式:case #0: 等)。
然後對應每個問題按規定順序在一行中輸出每乙個組合。
樣例input3a
abccba
aaoutput
case #0:
acase #1:aab
abcacbbc
ccase #2:aaa
a
/*
思路:篩選出字串後排序,dfs依次輸出就好
*/#include
#include
#include
using
namespace std;
string s,x;
mapint>m1;
void
dfs(
int pos,string y)
dfs(pos+
1,y+x[pos]);
dfs(pos+
1,y);}
intmain()
}printf
("case #%d:\n"
,i);
sort
(x.begin()
,x.end()
);m1.
clear()
;dfs(0
,"");
}return0;
}
EOJ 3023 字元組合
3.30更新 1 include 2 include 3 include 4 include 5using namespace std 6int main 726 printf case d n m 27for string x ans cout282930 31return0 32 使用位運算更簡...
面試經典(22) 字串組合
題目 輸入乙個字串,輸出該字串中字元的所有組合。舉個例子,如果輸入abc,它的組合有a b c ab ac bc abc。假設我們想在長度為 n的字串中求 m個字元的組合。我們先從頭掃瞄字串的第乙個字元。針對第乙個字元,我們有兩種選擇 一是把這個字元放到組合中去,接下來我們需要在剩下的 n 1個字元...
bzoj1856 字串 組合數學
果然是神題。數形結合。看到這道題,第一反應是把0看成 1,這樣就變成字首和 0了。其實也想到了把這個字串轉化成1條折線,即從 0,0 出發,經過n m步,每一步不是向右上走一格就是向右下走一格,要求不能到x軸的下方,求到達點 n m,n m 但是接下來的就比較巧妙了,確實想不到。也可以見 首先求出總...