bool find_operator_combination(const int* numbers, char* operators, int count, int answer)
{
if (count < 1) return answer == 0;
*operators = '+';
if (find_operator_combinations(numbers + 1, operators + 1, count - 1, answer - *numbers)) return true;
*operators = '-';
if (find_operator_combinations(numbers + 1, operators + 1, count - 1, answer + *numbers)) return true;
return false;
}
가령,
int a[4] = {1, 3, 5, 7};
char o[4] = {0, };
처럼해서,
find_operator_combination(a, o, 4, 6);
호출하면, ? 1 ? 3 ? 5 ? 7 = 6 인 조합을 o 배열에 채워줌.
첫 기호는 첫 숫자의 부호가 되는 셈이니까 유의.
1 + 3 - 5 + 7 = 6 을 출력하고 싶으면 부호를 두번째부터(o[1]) 출력해야함.
ㅇㅇ 부호
크... 지렸구요 감사합니다
아 맞구나 잘못읽은줄알고 덧글 지웠네 맨뒤에 4 6은 왜들어가는거임?
4는 갯수 6은 찾아낼 수식의 해답. n1 ? n2 ? n3 ... nk = a 인 물음표들을 찾는 문제.
4는 k 고 6 은 a 지.
아따 어렵네잉
[0] 포인터로 수정하다 잘못해서 남겼었다 미안 ㅋㄷㅋㄷ 지웠음.
초봅이가 아직 재귀 볼 단곈 아니야. 함수 호출구조가 머리에 빠삭히 들어오고 나서 보면 돼.
휴 그럼 다행이구만
http://dblack.tk
커뮤니티 사이트 입니다 많은 이용 부탁 드립니다.