C언어/문제풀다 하나씩

자전거 암호 찾기 strcmp() & found = 1 OUT

mcdn 2020. 5. 9. 02:09
반응형

크~

strcmp(s1, s2) == 0 일때 같다. 

#include <iostream>
#include <cstring>
using namespace std;

char path[5];
char named[10][5];
int cnt[10];
int found[3];
void abc(int which, int lev) {
	//named[which] = AAAC
	//cout << path << endl;

	if (strcmp(named[which], path) == 0) {
		cnt[which]++;
		found[which] = 1;
		return;
	}
	if (lev == 4) {
		cnt[which]++;
		return;
	}
	for (int i = 0; i < 26;i++) {
		path[lev] = i + 'A';
		abc(which, lev + 1);
		if (found[which] == 1) {
			return;
		}
	}
}

int main() {
	int n;
	cin >> n;
	for (int i = 0; i < n;i++) {
		cin >> named[i];
	}
	for (int i = 0; i < n;i++) {
		abc(i, 0);
	}
	for (int i = 0; i < n;i++) {
		cout << cnt[i] << endl;
	}
}

입력 예제

3 AAAC ATKC ZBAB

출력 결과

3 13107 440078

 

 

여기서 found[which] = 1;설정을 안해서 

답을 찾고도 계속 서치를 진행함

 

반응형