본문 바로가기

728x90
반응형

Algorithm/C++

(111)
[C++] 15649 : N과 M (1) https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net #include using namespace std; int N, M; //입력 int arr[10]; //출력할 배열(index마다 출력할 값 넣기) bool promising[10] = {}; //유망한지 확인(0이 유망), 0으로 초기화 void backtrack(int level) { //상태공간 트리의 level if (level == M) { //level이 M이면 출력 for (in..
[C++] 힙 정렬 #include using namespace std; void swap(int* arr, int index1, int index2) { //배열값 바꿔주기 int temp; temp = arr[index1]; arr[index1] = arr[index2]; arr[index2] = temp; } int main(void) { int arr[10] = { 5, 3, 8, 2, 9, 6, 10, 7, 1, 4 }; //정렬할 숫자들 int index = 9; //arr의 마지막 index 9 대입 int parent, child; //트리 구조에서 (부모 index), (자식 index)- heapify에서 씀 int location, left_child, right_child; //트리 구조에서 (현재 위..
[C++] 병합 정렬 #include using namespace std; int merge_arr[8]; //합치는 배열 공간 만들어주기 void merge(int* arr, int start, int end) { int middle = (start + end) / 2; //중앙 정해주기 int index = start, left = start, right = middle + 1; //(합치는 배열 index),(왼쪽 부분 배열 index),(오른쪽 부분 배열 index) while (left
[C++] 퀵 정렬 #include using namespace std; void swap(int* arr, int index1, int index2) { //배열값 바꿔주기 int temp; temp = arr[index1]; arr[index1] = arr[index2]; arr[index2] = temp; return; } void quick(int *arr,int start, int end) { if (start >= end) { //같거나 index가 꼬이면 더이상 정렬 할 필요가 없음 return; } int pivot = start; //pivot은 범위내 가장 왼쪽에 있는 값 int left = start+1, right = end; //pivot제외 값을 바꿔나갈 배열범위 while (left arr[lef..
[C++] 삽입 정렬 #include using namespace std; int main(void) { int arr[10] = { 5, 3, 8, 2, 9, 6, 10, 7, 1, 4 }; //정렬할 숫자들 int temp; //(배열값 바꾸기 위해) for (int i = 1; i
[C++] 버블 정렬 #include using namespace std; int main(void) { int arr[10] = { 5, 3, 8, 2, 9, 6, 10, 7, 1, 4 }; //정렬할 숫자들 int temp; //배열 값 바꿀 때 필요 for (int i = 0; i
[C++] 선택 정렬 #include using namespace std; #define INF 999 //무한대를 999로 대신 int main(void) { int arr[10] = { 5, 3, 8, 2, 9, 6, 10, 7, 1, 4 }; //정렬할 숫자들 int temp,min,index; //(배열 값 바꿀때 사용),(최솟값 구하기 위해),(index에 필요) for (int i = 0; i

728x90
반응형