C언어/문제풀다 하나씩

중복 순열 문제

mcdn 2020. 5. 27. 18:33
반응형
#include <iostream>
#include <string>
using namespace std;
string abc;
char path[5];
int used[5];
void rank_all(int lev, int start, int n) {
	if (lev == 3) {
		cout << path << endl;
		return;
	}
	for (int i = start; i < n;i++) {
		path[lev] = abc[i];
		rank_all(lev + 1, i, n);
		path[lev] = 0;
	}
}

int main() {
	
	cin >> abc;
	int len = abc.length();

	rank_all(0, 0, len);

	return 0;
}

입력 예제

ABCD

출력 결과

AAA AAB AAC AAD ABB ABC ABD ACC ACD ADD BBB BBC BBD BCC BCD BDD CCC CCD CDD DDD

 

다 같은데

ABCD뿐만 아니라 ABCDE같이 더 올 경우도 고려했어야.

 

따라서 char abc[4]=> string 자료형으로 바꿔주고

length()도 함수 매개변수에 넣어줌

반응형