Untitled
unknown
plain_text
a year ago
1.3 kB
9
Indexable
#include <iostream>
#pragma warning (disable:4996)
using namespace std;
int N, answer, map[15][6];
int dx[3] = {-1, -1, -1};
int dy[3] = {-1, 0, 1};
int visit[15][6];
int nvan;
void backTrack(int hang, int cot, int tien, int buoc){
if(buoc == N){
if(tien > answer) answer = tien;
return;
}
for(int i = 0; i < 3; i++){
int h = hang + dx[i];
int c = cot + dy[i];
if(h >= 0 && h < N && c >= 0 && c < 5 && visit[h][c] == 0){
if(map[h][c] == 0){
visit[h][c] = 1;
backTrack(h, c, tien, buoc+1);
visit[h][c] = 0;
}
if(map[h][c] == 1){
visit[h][c] = 1;
backTrack(h, c, tien + 1, buoc + 1);
visit[h][c] = 0;
}
if(map[h][c] == 2){
if(nvan == 1){
for(int k = 0; k <= 1; k++){
if(k == 0){
nvan = 0;
visit[h][c] = 1;
backTrack(h, c, tien, buoc+1);
visit[h][c] = 0;
nvan = 1;
}
}
}
}
}
}
}
int main(){
freopen("Text.txt", "r", stdin);
int T; cin >> T;
for(int tc = 1; tc <= T; tc++){
cin >> N;
for(int i = 0; i < 15; i++){
for(int j = 0; j < 5; j++){
map[i][j] = 0;
visit[i][j] = 0;
}
}
for(int i = 0; i < N; i++){
for(int j = 0; j < 5; j++){
cin >> map[i][j];
}
}
nvan = 1;
answer = -1;
visit[N][2] = 1;
backTrack(N, 2, 0, 0);
cout << "#" << tc << " " << answer << endl;
}
return 0;
}Editor is loading...
Leave a Comment