Untitled

 avatar
unknown
plain_text
a year ago
1.3 kB
5
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