Untitled
unknown
plain_text
2 years ago
1.3 kB
12
Indexable
#include <iostream> using namespace std; int dy[]={-1,0,1}; int N, Max, cnt, visitBomb, flag; int Map[13][5]; void backtrack(int k, int col){ if (k==0){ if (cnt>Max) Max=cnt; flag=1; return; } //Dung bom (chua dung thi dung hoac khong dung) if (visitBomb==0){ for (int i=k-1; i>=k-5 && i>=0; i--){ for (int j=0; j<5; j++){ if (Map[i][j]==2) Map[i][j]=-1; } } visitBomb=1; backtrack(k,col); for (int i=k-1; i>=k-5 && i>=0; i--){ for (int j=0; j<5; j++){ if (Map[i][j]==-1) Map[i][j]=2; } } visitBomb=0; } //Di chuyen for (int j=0; j<3; j++){ int nc=col+dy[j]; if (nc>=0 && nc<5){ if (Map[k-1][nc]==0 || Map[k-1][nc]==-1) backtrack(k-1,nc); else if (Map[k-1][nc]==1){ cnt++; backtrack(k-1,nc); cnt--; } else if (Map[k-1][nc]==2 && cnt>=1){ cnt--; backtrack(k-1,nc); cnt++; } } } } int main(){ freopen("input.txt", "r", stdin); int T; cin>>T; for (int tc=1; tc<=T; tc++){ cin>>N; for (int i=0; i<N; i++){ for (int j=0; j<5; j++){ cin>>Map[i][j]; } } Max=0; cnt=0; visitBomb=0; flag=0; backtrack(N,2); if (flag==1) cout<<"Case #"<<tc<<endl<<Max<<endl; else cout<<"Case #"<<tc<<endl<<-1<<endl; } return 0; }
Editor is loading...
Leave a Comment