#include<stdio.h>
#include<stdlib.h>
int m,n,t,i,j;
int a[1005][1005];
int main(){
while(scanf("%d%d",&m,&n)!=EOF){
scanf("%d",&t);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
i=0,j=n-1;
bool flag=false;
while(i>=0&&i<m&&j>=0&&j<n){
if(a[i][j]==t){flag=true;break;}
else if(a[i][j]>t){j--;}
else{i++;}
}
if(flag) printf("Yes\n");
else printf("No\n");
}
return 0;
}
问题2:如何在杨氏矩阵中查找第k小的数
我们可以建一个优先队列,首先将左上角元素放进优先队列,然后将该元素弹出并将该元素相邻的元素放入优先队列中,这个过程需要使用vis数组记录某个方格是否访问过。