3023 字元組合

2021-10-04 10:56:56 字數 1084 閱讀 2544

單點時限: 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 但是接下來的就比較巧妙了,確實想不到。也可以見 首先求出總...