Untitled
unknown
plain_text
18 days ago
1.6 kB
3
Indexable
Never
#include<iostream> using namespace std; int chess[65][65]; bool visited[65][65]; int result[20]; int nTestcase, k, nVisit, nr, nc, sum, maxSum; bool check; void backtrack(int i){ for(int j = 0; j < 8; j++){ if(!visited[i][j]){ check = false; for(int k = 0; k < 8; k++){ if(visited[k][j] == true || visited[i][k] == true) { check = true; break; } if(i - k >= 0 && j - k >= 0 && visited[i - k][j - k] == true){ check = true; break; } if(i - k >= 0 && j + k < 8 && visited[i - k][j + k] == true){ check = true; break; } if(i + k < 8 && j - k >= 0 && visited[i + k][j - k] == true){ check = true; break; } if(i + k < 8 && j + k < 8 && visited[i + k][j + k] == true){ check = true; break; } } if(check == false){ visited[i][j] = true; sum += chess[i][j]; if(i == 7){ maxSum = sum > maxSum ? sum : maxSum; visited[i][j] = false; sum -= chess[i][j]; return; }else if(i < 7){ backtrack(i + 1); } visited[i][j] = false; sum -= chess[i][j]; } } } } int main(){ freopen("input.txt","r",stdin); cin >> nTestcase; for(int testcase = 1; testcase <= nTestcase; testcase++){ cin >> k; cout << "Case #" << testcase << endl; for(int cnt = 0; cnt < k; cnt++){ for(int i = 0; i < 8; i++){ for(int j = 0; j < 8; j++){ cin >> chess[i][j]; visited[i][j] = false; } } sum = maxSum = 0; backtrack(0); cout << maxSum << endl; } } return 0; }
Leave a Comment