알고리즘&자료구조/백트레킹9 백준 9663 n=2 라고 가정했을 때, 2*2 행렬에서 2개의 퀸이 배치될 수 있는 모든 수를 구하는 문제이다. 전체적으로 n만큼 반복하고, 재귀적으로 다시 n만큼 돌면서 퀸이 배치될 수 있는 모든 경우의 수를 체크한다. import java.util.Scanner;public class Main2 { static int n; static int QueenCnt = 0; // 3가지 상태 확인 // 1.같은 열에 있는지 // 2.좌측하단 우측상단 대각선 // 3.좌측상단 우측하단 대각선 // ** 수학적으로 규칙을 판단할 필요 ** // 대각선에서 필요한 배열 칸의 개수 1=1, 2=3, 3=5 -> 2n-1 -> 문제에서 n의 최대 개수가 14이므로 크기를 최소 27로 설정해야 함 static boolean.. 2024. 6. 12. 백준 15657 #include #include using namespace std; int N, M; int temp[8]; // 출력용도(N개의 값이 있는 위치를 인덱스로 저장) int arr[8]; // N개의 값 저장 bool state[8][8]; // N개의 상태(중복 허용) void func(int k) { if (k == M) { for (int i = 0; i > M; for (int i = 0; i > arr[i]; } sort(arr, arr + N); // 수열은 사전순 정렬이므로 오름차순 정렬 func(0); return 0; } 2024. 3. 17. 백준 15656 #include #include using namespace std; int N, M; int temp[7]; // 출력용도 int arr[7]; // N개의 값 저장 bool state[7][7]; // N개의 상태(중복 허용) void func(int k) { if (k == M) { for (int i = 0; i M; for (int i = 0; i > arr[i]; } sort(arr, arr + N); // 수열은 사전순 정렬이므로 오름차순 정렬 func(0); return 0; } 2024. 3. 15. 백준 15655 코드 1) #include #include using namespace std; int N, M; bool state[10000]; // N개의 숫자에 대한 사용여부 상태 int arr[10000]; // 상태에 대한 데이터 배열이 {1,2,3} 순으로 정렬되어 있으면 상태배열에 [0],[1],[2] 각각 매칭됨 int temp[8]; // 재귀함수를 돌면서 모든 경우의 수를 체크해 출력하기 위한 용도 void func(int k) { if (k == M) { for (int i = 0; i > M; for (int i = 0; i > arr[i]; } sort(arr, arr + N); // 오름차순 정렬 func(0); return 0; .. 2024. 3. 11. 이전 1 2 3 다음