题目:逃出生天 思路:这道题本质就是找能否有路能供小猪下来,因为题目给的石像与激光是阻碍因素,所以要思考怎样小猪才不能下来。

要看相邻两行的石像是否通过组合来封住路。如果相邻两行的石像利用激光,因为小猪不能斜向行走,所以每列只要保证都至少有一行不能行走,小猪就不能通过。

如果不满足该情况,小猪就能通过。

代码(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;

}