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 }

        

  • 相关阅读:
    企业微信授权微信开发者工具
    liunx Python3中pip3安装模块出错,找不到SSL
    superagent 调用java接口,处理http请求
    Android开发一 application 应用界面主题Theme使用方法
    HTML5的Video标签的属性,方法和事件汇总
    多个select下拉框,选中当前某一项,其他下拉框去掉选中的值
    input range滑块插件 Powerange
    thinkphp 获取session的方法
    thinkphp I()方法获取不到ajax传值
    js验证图片上传大小,格式以及宽高
  • 原文地址:https://www.cnblogs.com/xiaoyoucai/p/7485536.html
Copyright © 2011-2022 走看看