zoukankan      html  css  js  c++  java
  • 6)从左到右依次递增,从上到下依次递减的数组

    原题展示:

    1 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

    然后思路总结:

    因为你的那个二维数组是从 左往右是递增的,  从上到下是递增的,所以就有了,应该从数组的一角,往下看,就是

    从左下角看:

         要是比这个大了,就往右走,

        要是比这个小了,就往上走

    然后代码如下:

        

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 int main(){
     4     int a[3][4]={
     5         {1,2,3,4},
     6         {5,6,7,8},
     7         {9,10,11,12}
     8         };
     9         int num,hang,lie,num3;
    10         printf("输入你要查询的数值:
    ");
    11         scanf("%d",&num);
    12         hang=2;
    13         lie=0;
    14         int temp=0;
    15         while(hang>=0&&lie<=3){
    16             num3=a[hang][lie];
    17             if(num>num3){
    18                 hang=hang;
    19                 lie=lie+1;
    20                 //printf("%d
    ",lie);
    21             }
    22         if(num<num3){
    23                 hang=hang-1;
    24                 lie=lie;
    25             }
    26         if(num==num3){
    27             temp=1;
    28             break;
    29             }
    30         
    31         } 
    32         if(temp==1){
    33                 printf("找到了
    "); 
    34         }else{
    35             printf("没有找到!!
    "); 
    36         }
    37         return 0;
    38     
    39 }

     还有一个就是我编写一个函数,来处理这个问题:

     1 #include <iostream>
     2 #include <cstdio>
     3 using namespace std;
     4 
     5 string search(int a[][1000], int m, int n, int key)
     6 {
     7     int i = 0;
     8     int j = n - 1;
     9     while(i < m && j >= 0)
    10     {
    11         if (a[i][j] == key)
    12             return "Yes";
    13         else if (a[i][j] < key)
    14             i++;
    15         else
    16             j--;
    17     }
    18 
    19     return "No";
    20 }
    21 
    22 int main()
    23 {
    24     int n, m;
    25     int a[1000][1000];//你看,虽然,表面上你可以改变数组的行数和列数,但是实际上,我是将数组的行数和列数设的很大,哎,全他妈是套路,不要脸
    26     while(scanf("%d%d", &m, &n) != EOF)
    27     {
    28         int key;
    29         scanf("%d", &key);
    30         for(int i = 0; i < m; i++)
    31             for(int j = 0; j < n; j++)
    32                 scanf("%d", &a[i][j]);
    33         cout << search(a, m, n, key) << endl;
    34     }
    35 }

        

  • 相关阅读:
    特殊字符大全
    ASP執行文件下載
    在 Access 里使用查询建立 存储过程/视图, 并使用 ASP 执行
    通過windows的排定工作來執行存儲過程
    前台页面中用js取得eWebEditor的值
    IE7外觀優化
    电话订票
    在BIOS设置“扩展或板载”显卡的方法
    子窗口中操作父窗口对像(javascript)(转)
    mailto用法
  • 原文地址:https://www.cnblogs.com/xiaoyoucai/p/7485536.html
Copyright © 2011-2022 走看看