Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
1.2 kB
2
Indexable
#include<iostream>
using namespace std;

int a[25][5];

int X[3] = { 1,-1, 0};
int Y[3] = {-1,-1, -1};

int ans;
int n;


void Try(int row, int col, int bomb, int sum){
	if(sum ==-1) return;	
	if(row ==0){
		if (ans < sum )ans = sum;
		return;
	}
	for(int h =0; h<3; h++){
 		int r = row +Y[h];
		int c = col +X[h];
		
		if(r >=0 && r<n && c>=0 && c<5){

			if ( a[r][c] <2 ){
				Try(r, c, bomb, sum + a[r][c]);
			}
			if (a[r][c] == 2){
				if(bomb){
					for(int i =r; i>r-5; i--){
						for(int j =0; j<5; j++){
							if(a[i][j] == 2) a[i][j] = 3;
						}
					}
					Try(r,c,0,sum);
					for(int i =r; i>r-5; i--){
						for(int j =0; j<5; j++){
							if(a[i][j] == 3) a[i][j] = 2;
						}
					}
				}
				else {
					Try(r,c,0,sum-1);
				}
			}
			if (a[r][c] == 3){
				Try(r,c,0,sum);
			}
			
		}
	}
		
}

int main(){
	freopen("Text.txt", "r", stdin);
	int test;
	cin >> test;
	
	for(int tc= 1; tc <= test; tc++){
		cin >> n;

		for(int i=0; i < n; i++){
			for(int j= 0; j < 5; j++){
				cin >> a[i][j];
			}
		}
		
		ans =-1;
		Try(n, 2, 1, 0);
		cout << "Case #" << tc << endl;
		cout << ans << endl;
		}
	return 0;
}