반응형
ㅋㅋㅋㅋ trial and error 그 자체
1. if else 문에 ! ? 등 다 안 채워 놓은 상태
2. num[lev] num[lev+1]로 calcul 해서
sum이랑 num[lev+1]했어야
그래서 처음 넣을 때부터 dfs(0, num[0])으로 바꿈
3. 이번에는 잘 되는데 i, start 설정해놔서
조합 문제가 되어버림;; 순서가 중요한 순열 문제인데
4. 경우의수가 많아졌는데 답이 4... 6이어야
문제가 조금 설명이 부족했는데 난 '두개'고르래서 서로 다른 두개인줄 알았지..
!! 처럼 같은 경우도 선택되도록 바꿈
5. 성공!
이제 문제는 어디서 backtracking 해야..?
#include <iostream>
#include <string>
using namespace std;
int num[3];
char ope[5] = { '!','#','$','&','^' };
// ++ -- +10 +^2 0
int calcul(int num1, int num2, char op) {
if (op == '!') {
return num1 + num2 + num2;
}
else if (op == '#') {
return num1 - num2 - num2;
}
else if (op == '$')
return num1 + 10;
else if (op == '&')
return num2 * num2 + num1;
else if (op == '^')
return 0;
}
char path[3]; // op1 op2
int cnt;
void dfs(int lev, int sum) {
if (lev == 2) {
//cout << path << " " << sum << endl;
if (sum >= 20) {
cnt++;
}
return;
}
for (int i = 0; i < 5;i++) {
path[lev] = ope[i];
int temp = calcul(sum, num[lev + 1], ope[i]);
dfs(lev + 1, temp);
}
}
int main() {
for (int i = 0; i < 3;i++) {
cin >> num[i];
}
dfs(0, num[0]);// lev sum
cout << cnt;
}
반응형
'C언어 > 문제풀다 하나씩' 카테고리의 다른 글
메모리 풀로 링크드리스트 만들기 (3) | 2020.06.23 |
---|---|
runtimeerror 나서 틀린 문제 고기 뒤집기 OXOOX (0) | 2020.06.04 |
음료 포인트 계산하기 쉬움. (0) | 2020.06.04 |
주변도 같이 사라지는 배열에서 재귀구현 노가다 (0) | 2020.05.29 |
경로 찾기 장애물 있고 (0) | 2020.05.29 |
등수일때는 index-1하기 (0) | 2020.05.27 |
string == 이거 된다! (0) | 2020.05.27 |
동전 개수 세기 (0) | 2020.05.27 |