OpenJudge 2.2-1750全配列

1228 ワード

Description
異なる小文字からなる文字列を指定し、この文字列のすべての全配列を出力します.小文字には「a」<'b'<...<」があると仮定します.y'<'z'であり、与えられた文字列のアルファベットは小さい順に並べられている.
Input
入力は1行のみで、異なる小文字からなる文字列で、既知の文字列の長さは1~6です.
Output
この文字列のすべての配列方式を出力し、行ごとに1つの配列をします.アルファベット順の比較的小さい配列が前に必要です.アルファベット順は次のように定義されます.
既知のS=s
1s
2...s
k , T = t
1t
2...t
k,Ss
1 = t
1, s
2 = t
2, ..., s
p - 1 = t
p - 1, s
p < t
pが成立する.
Sample Input
abc

Sample Output
abc
acb
bac
bca
cab
cba

この問題はOpenJudge 2ですが.2基本アルゴリズムの再帰と自己呼び出し関数の問題は,依然として遡及で解決できるが,遡及もただのループ+再帰という問題は数字の全配列と同じ理屈であり,前のnの全配列(http://blog.csdn.net/cqbzlytina/article/details/73466891)を敷くと、簡単にこの問題を作ることができますが、文字列の処理に注意してください.
#include
#include
int str;
char a[7],c[7];
bool b[7]={0};
void print()
{
     for(int i=1;i<=str;i++)
	printf("%c",c[i]);
     printf("
");
}
void search(int r){for(int i=0;i