题目描述
输入 第一行输入n,代表平面的边长
接下来n行,每行n个整数,代表每个格子上的数
最后一行包含四个整数x, y, t, num,分别代表初始的位置(x, y),时间t和指定的数字num
输出
如果可以到达,输出Yes,如果不可以,输出No
注意:矩阵的坐标(x,y)指矩阵中从上往下第x行,从左往右第y列的坐标,与传统直角坐标系略有不同
思路:
遍历每一个格子,依次判断指定数字所在的格子与初始位置的距离是否小于t;
代码
#include<iostream>
#include<cmath>//判断距离需要用到绝对值函数
using namespace std;
int main()
{
int flag=0;
int n; cin>>n;
int a[15][15]={0};
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];//读取数据
int x,y,t,num;
cin>>x>>y>>t>>num;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i][j]==num)
{
int lc=abs(i-x)+abs(j-y);
if(lc<=t)
{
flag=1;
break;
}
}
}
}
if(flag) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
return 0;
}