Algorithm/BOJ211 [BOJ]10972번: 다음 순열(c++) https://www.acmicpc.net/problem/10972 10972번: 다음 순열첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다.www.acmicpc.net 시간복잡도 : O(N)#include using namespace std;bool next_permutation(int numbers[], int N){ // i : 뒤에서부터 시작 되는 가장 긴 증가 수열의 마지막 인덱스 int i = N - 1; while (i > 0 && numbers[i - 1] > numbers[i]) { --i; } // 전체가 내림차순인 상태 : 마지막 순열 if (i numbers[j]) { --j; } // i번째 수와.. 2020. 5. 10. [BOJ]15666번: N과 M (12)(c++) https://www.acmicpc.net/problem/15666 15666번: N과 M (12)한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해www.acmicpc.net #include #include using namespace std;const int MAX = 8;int numbers[MAX];int output[MAX];void dfs(int N, int M, int depth, int start){ if (depth == M) { for (int i = 0; i > N >> M; int tmp[MAX]; for (int i = 0; i > tmp[i].. 2020. 5. 10. [BOJ]15665번: N과 M (11)(c++) https://www.acmicpc.net/problem/15665 15665번: N과 M (11) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 방법 1: 중복 제거 한 숫자열로 조합 #include #include using namespace std; const int MAX = 7; int numbers[MAX]; int output[MAX]; void dfs(int N, int M, int depth) { if (depth == M) { for (int i = 0; i M; int tmp[MAX].. 2020. 5. 9. [BOJ]15664번: N과 M (10)(c++) https://www.acmicpc.net/problem/15664 15664번: N과 M (10) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net #include #include using namespace std; const int MAX = 8; int numbers[MAX]; int output[MAX]; int cnt[MAX]; void dfs(int N, int M, int depth, int start) { if (depth == M) { for (int i = 0; i < M; ++i) { cout 0) { --cn.. 2020. 5. 9. 이전 1 ··· 27 28 29 30 31 32 33 ··· 53 다음