现在的位置: 首页 > 综合 > 正文

杨氏矩阵中查找某个数

2013年08月02日 ⁄ 综合 ⁄ 共 444字 ⁄ 字号 评论关闭
#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数组记录某个方格是否访问过。

抱歉!评论已关闭.