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


    1. /********************************* 
    2. *   日期:2013-10-11 
    3. *   作者:SJF0115 
    4. *   题号: 九度OJ 题目1384:二维数组中的查找 
    5. *   来源:http://ac.jobdu.com/problem.php?pid=1384 
    6. *   结果:AC 
    7. *   来源:剑指Offer 
    8. *   总结: 
    9. **********************************/  
    10. #include<stdio.h>  
    11. #define N 1001  
    12.   
    13. int Matrix[N][N];  
    14.   
    15. int Find(int Matrix[N][N],int m,int n,int t){  
    16.     //从矩阵的右上角查起  
    17.     int row = 0;  
    18.     int col = n - 1;  
    19.     while(row < m && col >= 0){  
    20.         int number = Matrix[row][col];  
    21.         //如果该数字等于要查找的数据,查找过程结束  
    22.         if(number == t){  
    23.             return 1;  
    24.         }  
    25.         //如果该数字小于要查找的数据,查找的数据肯定在该数据的下方,即剔除这个数据所在的行  
    26.         else if(number < t){  
    27.             row++;  
    28.         }  
    29.         //如果该数字大于要查找的数据,查找的数据肯定在该数据的左方,即剔除这个数据所在的列  
    30.         else{  
    31.             col--;  
    32.         }  
    33.     }  
    34.     return 0;  
    35. }  
    36.   
    37. int main(){  
    38.     int m,n,t,i,j;  
    39.     while(scanf("%d %d",&m,&n) != EOF){  
    40.         scanf("%d",&t);  
    41.         //输入矩阵  
    42.         for(i = 0;i < m;i++){  
    43.             for(j = 0;j < n;j++){  
    44.                 scanf("%d",&Matrix[i][j]);  
    45.             }  
    46.         }  
    47.         //查找数据  
    48.         int result = Find(Matrix,m,n,t);  
    49.         if(result == 1){  
    50.             printf("Yes ");  
    51.         }  
    52.         else{  
    53.             printf("No ");  
    54.         }  
    55.     }  
    56.     return 0;  
    57. }  


    【分析】







    【第二种方法】

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

    1. #include<stdio.h>  
    2.   
    3. int main()  
    4. {     
    5.     int i,j,m,n,t,number,flag;  
    6.     while (scanf("%d %d",&m, &n) != EOF)  
    7.     {  
    8.         flag = 0;  
    9.         scanf("%d",&t);  
    10.         for(i = 0; i < m; i++)  
    11.             for(j = 0; j < n; j++)  
    12.             {  
    13.                 scanf("%d",&number);  
    14.                 if(t == number)  
    15.                 {     
    16.                     flag = 1;                                                    
    17.                 }  
    18.             }  
    19.         if(flag == 1)  
    20.         {  
    21.             printf("Yes ");  
    22.         }  
    23.         else  
    24.         {  
    25.             printf("No ");   
    26.         }  
    27.     }  
    28.     return 0;  
    29. }  

  • 相关阅读:
    Linux命令之find exec rm-删除所有日志文件
    Linux常用系统信息查询命令
    shell后台运行脚本
    Linux 下后台运行程序
    Ubuntu配置和修改IP地址
    ssh免密码登录配置方法
    (转)linux如何将新硬盘挂载到home目录下
    Shell中if [ ] 中-a到-z的意思
    安防监控相关
    本地yum源的建立
  • 原文地址:https://www.cnblogs.com/baoendemao/p/3804711.html
Copyright © 2020-2023  润新知