Untitled
unknown
plain_text
2 years ago
1.6 kB
13
Indexable
#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;
}Editor is loading...
Leave a Comment