剑指Offer之1384:二维数组中的查找

来源:互联网 发布:网络工程施工规范 编辑:程序博客网 时间:2024/05/22 08:18
/**********************************   日期:2013-10-11*   作者:SJF0115*   题号: 九度OJ 题目1384:二维数组中的查找*   来源:http://ac.jobdu.com/problem.php?pid=1384*   结果:AC*   来源:剑指Offer*   总结:**********************************/#include<stdio.h>#define N 1001int Matrix[N][N];int Find(int Matrix[N][N],int m,int n,int t){//从矩阵的右上角查起int row = 0;int col = n - 1;while(row < m && col >= 0){int number = Matrix[row][col];//如果该数字等于要查找的数据,查找过程结束if(number == t){return 1;}//如果该数字小于要查找的数据,查找的数据肯定在该数据的下方,即剔除这个数据所在的行else if(number < t){row++;}//如果该数字大于要查找的数据,查找的数据肯定在该数据的左方,即剔除这个数据所在的列else{col--;}}return 0;}int main(){int m,n,t,i,j;while(scanf("%d %d",&m,&n) != EOF){scanf("%d",&t);//输入矩阵for(i = 0;i < m;i++){for(j = 0;j < n;j++){scanf("%d",&Matrix[i][j]);}}//查找数据int result = Find(Matrix,m,n,t);if(result == 1){printf("Yes\n");}else{printf("No\n");}}return 0;}


【分析】







【第二种方法】

此题考查的主要是第一种方法的解题思路。

#include<stdio.h>int main(){       int i,j,m,n,t,number,flag;    while (scanf("%d %d",&m, &n) != EOF)    {        flag = 0;        scanf("%d",&t);        for(i = 0; i < m; i++)            for(j = 0; j < n; j++)            {                scanf("%d",&number);                if(t == number)                {                       flag = 1;                                                                  }            }        if(flag == 1)        {            printf("Yes\n");        }        else        {            printf("No\n");         }    }    return 0;}





原创粉丝点击