欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

蓝桥杯测试题 算法改进 逃生密室 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; }