본문 바로가기

BOJ206

[BOJ]10974번: 모든 순열(c++) https://www.acmicpc.net/problem/10974 10974번: 모든 순열N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.www.acmicpc.net  #include #include using namespace std;int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); const int MAX = 8; // 입력 int N; cin >> N; int A[MAX] = {0,}; for (int i = 0; i  라이브러리를 사용한 방법 2020. 5. 11.
[BOJ]10973번: 이전 순열(c++) https://www.acmicpc.net/problem/10973 10973번: 이전 순열첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다.www.acmicpc.net  #include using namespace std;bool prev_permutation(int A[], int N){ // i : 뒤에서부터 시작 되는 가장 긴 증가 수열의 마지막 인덱스 int i = N - 1; while (i > 0 && A[i - 1] A[j] 인 수. // i - 1번째 수보다 작은 수 찾기 int j = N - 1; while (A[i - 1] > N; int A[MAX] = {0,}; for (int i = 0; i .. 2020. 5. 11.
[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.