Untitled
unknown
plain_text
a year ago
1.1 kB
7
Indexable
Never
#include<iostream> using namespace std; int N = 8; int X[101], cot[101], d1[101], d2[101]; int arr[65][65]; int Max = 0; int Sum = 0; void inkq(){ for (int i = 1; i <= N; i++) { for (int u = 1; u <= N; u++) { Sum += arr[u][X[u]]; } if(Max < Sum)Max = Sum; Sum = 0; } } //cot, d1, d2 danh dau cot, cheo xuoi, cheo nguoc void Try(int i){ for (int j = 1; j <= N; j++) { if(cot[j] == 1 && d1[i - j + N] == 1 && d2[i+j-1] == 1){ X[i] = j; cot[j] = d1[i-j+N] = d2[i+j-1] = 0; if(i == N) inkq(); else Try(i+1); //backtrack cot[j] = d1[i-j + N] = d2[i+j-1] = 1; } } } int main(){ int T; //freopen("queen.txt", "r", stdin); cin>>T; int k; for (int test = 1; test <= T; test++) { cin>>k; cout<<"Case #"<<test<<endl; for (int sobang = 0; sobang < k; sobang++) { for (int i = 1; i <= 8; i++) { for (int j = 1; j <= 8; j++) { cin>>arr[i][j]; } } Max = 0; for (int i = 0; i <= 100; i++) { cot[i] = d1[i] = d2[i] = 1; } Try(1); cout<<Max<<endl; //Max = Sum = 0; } } return 0; }