社区讨论
0分 求条qwq
P8673[蓝桥杯 2018 国 C] 迷宫与陷阱参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhjkuuv7
- 此快照首次捕获于
- 2025/11/04 04:13 4 个月前
- 此快照最后确认于
- 2025/11/04 04:13 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
struct st{
int x , y , k ;
};
int mp[1005][1005][15] ;
int n , k ;
char c[1005][1005] ;
int dx[] = { 0 , 1 , 0 , -1 } ;
int dy[] = { -1 , 0 , 1 , 0 } ;
queue<st> que ;
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n >> k ;
memset( mp , -1 , sizeof( mp ) ) ;
for ( int i = 1 ; i <= n ; i++ ){
for ( int j = 1 ; j <= n ; j++ ){
cin >> c[i][j] ;
}
}
que.push( { 1 , 1 , 0 } ) ;
mp[1][1][0] = 0 ;
while( !que.empty() ){
st head = que.front() ;
que.pop() ;
int sp = mp[head.x][head.y][head.k] + 1 ;
int wd = head.k ;
if ( wd < 0 ) wd = 0 ;
cout << head.x << " " << head.y << " " << head.k << " " << sp - 1 << endl ;
for ( int kk = 0 ; kk <= 3 ; kk++ ){
int xx = head.x + dx[kk] ;
int yy = head.y + dy[kk] ;
if ( xx < 1 || xx > n || yy < 1 || yy > n ) continue ;
if ( xx == n && yy == n ){
cout << sp ;
return 0 ;
}
if ( c[xx][yy] == '#' ) continue ;
if ( c[xx][yy] == 'X' && wd == 0 ) continue ;
wd-- ;
if ( wd < 0 ) wd = 0 ;
if ( c[xx][yy] == '%' ){
wd = k ;
c[xx][yy] = '.' ;
}
if ( mp[xx][yy][wd] != -1 ) continue ;
que.push( { xx , yy , wd } ) ;
mp[xx][yy][wd] = sp ;
}
}
cout << -1 ;
return 0 ;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...