C언어/문제풀다 하나씩

등수일때는 index-1하기

mcdn 2020. 5. 27. 22:09
반응형
#include <iostream>
#include <string>
using namespace std;

char zoo[7] = "DTMRWC"; // 'D'를 0의 자리에 둔닷
char path[7];
int used[7];
int a, b;
int cnt;
void dfs(int lev) {
	if (path[a-1] == 'D'|| path[b-1] == 'D')return;
	
	if (lev == 6) {
		cnt++;
		//if (path[0] == 'T')cout << path << endl;
		return;
	}
	for (int i = 0; i < 6;i++) {
		if (used[i] == 0) {
			used[i] = 1;
			path[lev] = zoo[i];
			dfs(lev + 1);
			path[lev] = 0;
			used[i] = 0;
		}
	}
}
int main() {
	cin >> a >> b;
	// 1, 6 이 자리는 피해주세요

	dfs(0);
	cout << cnt;
}

[출력]
뽀삐가 a, b 등수가 되는 경우를 제외한 나머지의 경우의 수를 출력해주세요.

입력 예제

1 6

출력 결과

480

반응형