C++) 백트래킹 - 합이 100이 되는 경우 찾기 #include #include #define MAX_NUM 10 using namespace std; bool isFind; int ans[7]; int arr[MAX_NUM]; bool visited[MAX_NUM]; void func(int cnt, int cur, int sum) { if (isFind) return; if (cnt == 7) { if (sum == 100) { sort(ans, ans + 7); for (int i = 0; i < 7; i++) cout arr[i]; func(0,0,0); return 0; } Python) 완전탐색 - 난쟁이 두 명의 합을 뺀 숫자가 100인 경우 찾기 import sys arr = [0] *..
C++) #include #include #define MAX_NUM 22 using namespace std; int n; int s; int ans; int arr[MAX_NUM]; bool visited[MAX_NUM]; void suyeol(int cnt, int sum, int start) { if (cnt > 0 && sum == s) ans++; for (int i = start; i < n; i++) { if (!visited[i]) { visited[i] = true; suyeol(cnt + 1, sum + arr[i], i+1); visited[i] = false; } } } int main(void) { ios_base::sync_with_stdio(false); cin.tie(nul..
- N과 M (1) : 중복 수열 X / 숫자 중복 X - N과 M (2) : 중복 수열 X / 숫자 중복 X / 오름차순 - N과 M (3) : 중복 수열 X / 숫자 중복 O - N과 M (4) : 중복 수열 X / 숫자 중복 O / 비내림차순 ~~아래부터는 사용자로부터 직접 입력받음~~ - N과 M (5) : 중복 수열 X / 사전 증가순 - N과 M (6) : 중복 수열 X / 사전 증가순 / 오름차순 - N과 M (7) : 중복 수열 X / 사전 증가순 / 같은 수 여러번 O - N과 M (8) : 중복 수열 X / 사전 증가순 / 같은 수 여러번 O / 비내림차순 C++) #include #include #include #define MAX_NUM 10 using namespace std; i..
- N과 M (1) : 중복 수열 X / 숫자 중복 X - N과 M (2) : 중복 수열 X / 숫자 중복 X / 오름차순 - N과 M (3) : 중복 수열 X / 숫자 중복 O - N과 M (4) : 중복 수열 X / 숫자 중복 O / 비내림차순 ~~아래부터는 사용자로부터 직접 입력받음~~ - N과 M (5) : 중복 수열 X / 사전 증가순 - N과 M (6) : 중복 수열 X / 사전 증가순 / 오름차순 - N과 M (7) : 중복 수열 X / 사전 증가순 / 같은 수 여러번 O C++) #include #include #include #define MAX_NUM 10 using namespace std; int n, m; vector v; int ans[MAX_NUM];// 정답 가진 배열 // ..
- N과 M (1) : 중복 수열 X / 숫자 중복 X - N과 M (2) : 중복 수열 X / 숫자 중복 X / 오름차순 - N과 M (3) : 중복 수열 X / 숫자 중복 O - N과 M (4) : 중복 수열 X / 숫자 중복 O / 비내림차순 ~~아래부터는 사용자로부터 직접 입력받음~~ - N과 M (5) : 중복 수열 X / 사전 증가순 - N과 M (6) : 중복 수열 X / 사전 증가순 / 오름차순 C++) #include #include #include #define MAX_NUM 10 using namespace std; int n, m; vector v; int ans[MAX_NUM];// 정답 가진 배열 bool visited[MAX_NUM];// 방문 여부 // cnt == 현재 수열..
- N과 M (1) : 중복 수열 X / 숫자 중복 X - N과 M (2) : 중복 수열 X / 숫자 중복 X / 오름차순 - N과 M (3) : 중복 수열 X / 숫자 중복 O - N과 M (4) : 중복 수열 X / 숫자 중복 O / 비내림차순 ~~아래부터는 사용자로부터 직접 입력받음~~ - N과 M (5) : 중복 수열 X / 사전 증가순 C++) #include #include #include #define MAX_NUM 10 using namespace std; int n, m; vector v; int ans[MAX_NUM];// 정답 가진 배열 bool visited[MAX_NUM];// 방문 여부 // cnt == 현재 수열 길이 // cur == 탐색 시작 위치 void suyeol(in..
- N과 M (1) : 중복 수열 X / 숫자 중복 X - N과 M (2) : 중복 수열 X / 숫자 중복 X / 오름차순 - N과 M (3) : 중복 수열 X / 숫자 중복 O - N과 M (4) : 중복 수열 X / 숫자 중복 O / 비내림차순 C++) #include #include #define MAX_NUM 10 using namespace std; int n, m; int ans[MAX_NUM]; // cnt == 현재 수열 길이 // cur == 탐색 시작 위치 void suyeol(int cnt, int cur) { if (cnt == m) { for (int i = 0; i < m; i++) cout m; suyeol(0, 1); return 0; } Python) import sys r..
- N과 M (1) : 중복 수열 X / 숫자 중복 X - N과 M (2) : 중복 수열 X / 숫자 중복 X / 오름차순 - N과 M (3) : 중복 수열 X / 숫자 중복 O C++) #include #include #define MAX_NUM 10 using namespace std; int n, m; int ans[MAX_NUM]; // cnt == 현재 수열 길이 void suyeol(int cnt) { if (cnt == m) { for (int i = 0; i < m; i++) cout m; suyeol(0); return 0; } Python) import sys read = sys.stdin.readline n, m = map(int, read().rstrip().split()) ans ..
- N과 M (1) : 중복 수열 X / 숫자 중복 X - N과 M (2) : 중복 수열 X / 숫자 중복 X / 오름차순 C++) #include #include #define MAX_NUM 10 using namespace std; int n, m; int ans[MAX_NUM]; bool visited[MAX_NUM]; // cnt == 현재 수열 길이 // start == 어느 숫자부터 시작할건지 void suyeol(int cnt, int start) { // 길이가 m인 수열을 다 만들었다 if (cnt == m) { for (int i = 0; i < m; i++) cout m; suyeol(0, 1); return 0; } #include #include #define MAX_NUM 10 ..
- N과 M (1) : 중복 수열 X / 숫자 중복 X C++) #include #include #define MAX_NUM 10 using namespace std; int n, m; int ans[MAX_NUM]; bool visited[MAX_NUM]; // cnt == 현재 수열의 길이 void suyeol(int cnt) { // m개 수열을 만들었다 if (cnt == m) { for (int i = 0; i m; suyeol(0); return 0; } Python) import sys read = sys.stdin.readline n, m = map(int, read().rstrip().split()) ans = [0] * m visited = [False] ..