题目:逃出生天 思路:这道题本质就是找能否有路能供小猪下来,因为题目给的石像与激光是阻碍因素,所以要思考怎样小猪才不能下来。
要看相邻两行的石像是否通过组合来封住路。如果相邻两行的石像利用激光,因为小猪不能斜向行走,所以每列只要保证都至少有一行不能行走,小猪就不能通过。
如果不满足该情况,小猪就能通过。
代码(C):#include<stdio.h> int main() {
int n,m;//输入n,m
scanf("%d%d",&n,&m);
int flag=1,position[1010];//flag记录小猪能否到达终点 ,position记录每行石像所在列位置
char direction[1010];//direction记录石像发射激光的方向
scanf("%d %c",&position[0],&direction[0]);//因为仅输入第一行数据时,缺少与其相邻行数据,不放入循环判断
for(int i=1;i<n;i++)
{
scanf("%d %c",&position[i],&direction[i]);//输入第i行数据
if(flag==1)//以下部分用于判断小猪是否不能到达终点,确定无法到达后就不用再执行
{
if(direction[i]==direction[i-1])//相邻两行激光同向
{
if(direction[i]=='L'&&(position[i]==m||position[i-1]==m)) flag=0;
else if(direction[i]=='R'&&(position[i]==1||position[i-1]==1)) flag=0;
}
else//相邻两行激光反向
{
if(direction[i]=='R')
{
if(position[i]<=position[i-1]+1) flag=0;
}
else
{
if(position[i-1]<=position[i]+1) flag=0;
}
}
}
}
if(flag==1) printf("YES");
else printf("NO");
return 0;
}

京公网安备 11010502036488号