蓝桥杯测试题 算法改进 逃生密室 C++
最编程
2024-03-29 14:02:38
...
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define pb(x) push_back(x)
typedef long long all;
typedef vector<int> vi;
typedef pair<int,int> pii;
typedef vector<pair<int,int> > vp;
typedef vector< vector<int> > v2;
int gcd(int a,int b) { return b==0?a:gcd(b,a%b);}
int n,m,a,b,c,p,q,l;
bool st[1010][1010];
vector<char>s;
string ans="";
bool fg=false;
void dfs(int x,int y){
if(x>n||y>m||fg) return;
if(x==n&&y==m&&!fg) {
for(int i=0;i<s.size();i++) ans+=s[i];
fg=true;
cout<<ans;
return;
}
if(p<a&&st[x][y+2])
s.push_back('r'),p++,dfs(x,y+2),s.pop_back(),p--;
if(q<b&&st[x+1][y+1])
s.push_back('g'), q++,dfs(x+1,y+1),s.pop_back(),q--;
if(l<c&&st[x+3][y])
s.push_back('b'), l++,dfs(x+3,y),s.pop_back(),l--;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n>>m>>a>>b>>c;
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>st[i][j];
dfs(1,1);
if(!fg) cout<<-1;
}
上一篇: 密室逃脱 - dp
下一篇: 密室逃脱。越恐怖,越赚钱。
推荐阅读