brave_chiemdat
duyvan
plain_text
2 years ago
1.7 kB
6
Indexable
//chiem dat
#include <iostream>
int dx[] = {0,0,-1,1};
int dy[] = {-1,1,0,0};
using namespace std;
int M, N, X, Y, map[10][10], visit[10][10];
int ans;
void nhap(){
cin >> M >> N >> X >> Y;
for(int i=1; i<=M; i++){
for(int j=1; j<=N; j++){
cin >> map[i][j];
visit[i][j]=0;
}
}
}
void backtrack(int x, int y, int creeps, int cnt){
if(ans<cnt) ans = cnt;
for(int k=0; k<4; k++){
int nx = x+dx[k];
int ny = y+dy[k];
if(nx>0 && nx<=M && ny>0 && ny<=N && map[nx][ny]!=0){
if(2*map[nx][ny]<=creeps && visit[nx][ny]==0){
visit[nx][ny]=1;
backtrack(nx,ny,creeps+map[nx][ny],cnt+1);
visit[nx][ny]=0;
}
if(creeps>map[nx][ny] && creeps<2*map[nx][ny] && visit[nx][ny]==0){
visit[nx][ny]=1;
backtrack(nx,ny,creeps-map[nx][ny],cnt+1);
visit[nx][ny]=0;
}
}
}
}
int main(){
freopen("INP.txt","r",stdin);
// freopen("OUT.txt","w",stdout);
int T; cin >> T;
for(int tc=1; tc<=T; tc++){
nhap();
ans = 0;
visit[X][Y]=1;
backtrack(X,Y,map[X][Y],1);
cout <<'#' << tc << " " << ans << endl;
}
return 0;
}
/*
#1 12
#2 17
#3 2
#4 1
#5 2
#6 4
#7 2
#8 2
#9 4
#10 8
#11 3
#12 6
#13 2
#14 2
#15 6
#16 32
#17 2
#18 2
#19 29
#20 44
#21 2
#22 22
#23 1
#24 2
#25 1
#26 1
#27 26
#28 5
#29 3
#30 32
#31 2
#32 2
#33 5
#34 44
#35 1
#36 2
#37 1
#38 4
#39 1
#40 29
#41 42
#42 1
#43 1
#44 1
#45 2
#46 6
#47 4
#48 44
#49 1
#50 1
*/Editor is loading...
Leave a Comment