OpenJudge-Noi 1750 전체 배열

총 시간 제한:
1000ms 
메모리 제한:
65536kB
묘사
서로 다른 소문자로 구성된 문자열을 지정해서 이 문자열의 모든 배열을 출력합니다.우리는 소문자에 대해'a'<'b'<...'가 있다고 가정한다.y'<'z', 그리고 주어진 문자열의 자모는 이미 어릴 때부터 큰 순서에 따라 배열되었다.
입력
입력은 한 줄만 있고 서로 다른 소문자로 구성된 문자열입니다. 알고 있는 문자열의 길이는 1에서 6 사이입니다.
출력
이 문자열의 모든 배열 방식을 줄마다 배열합니다.알파벳 순서가 비교적 작은 배열을 앞에 두도록 요구하다.영숫자는 다음과 같이 정의됩니다.
알려진 S = s
1s
이...s
k , T = t
1t
이...t
k, Ss
1 = t
1, s
2 = t
2, ..., s
p - 1 = t
p - 1, s
p < t
성립하다.
샘플 입력
abc

샘플 출력
abc
acb
bac
bca
cab

cba
/*       
*/
#include "iostream"
#include "cmath"
#include "vector"
#include "string"
using namespace std;
bool visited[6] = { 0 };
string s;
char b[6];
int len;
void all_permutation(int step) {
	if (step == len) { /*  len - -   */
		cout << b << endl;
		return;
	}
	for (int i = 0; i < len; i++) { /*  s[step]  */
		if (!visited[i]) {  /*  step-1  */
			visited[i] = 1;
			b[step] = s[i];
			all_permutation(step + 1);
			visited[i] = 0; /*  step  i  */
		}
	}
}
int main() {
	cin >> s;
	len = s.length();
	all_permutation(0);
	return 0;
}

좋은 웹페이지 즐겨찾기