nord vpnnord vpn
Ad

Untitled

mail@pastecode.io avatar
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


nord vpnnord vpn
Ad