研二的开始找工作了,首先祝愿他们都能够找到自己满意的工作。看着他们的身影,自问明年自己这个时候是否可以从容面对呢?心虚不已,赶紧从老严那儿讨来一本《剑指offer》。在此顺便将自己做题所想,发现的一些小技巧记录于此,就当是学习笔记。先上一些,没做完的后面有时间继续补上。

                                                                           2013.09.04于行政北楼

 

题目1:二维数组的查找

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

      例如下面的二维数组就是每行、每列都递增排序。如果在这个数组中查找数字7,则返回true;如果查找数字5,由于数组不含有该数字,则返回false;

1    2    8    9

2    4    9   12

4    7   10  13

6    8   11  15

      思路:这题的关键点是用好“每一行从左到要递增,每一列从上到下递增”这个条件,解题时从数组右上角9出发,若它等于查找的数,那么返回结束;若它比查找数小,那么向左移动到8,继续查找;若它比查找数大,那么向下移动到12。比如说我们要寻找7,一次经过的数是9-8-2-4-7,返回。

 1 #include<iostream>
 2 using namespace std;
 3 
 4 const int row=4;
 5 const int column=4;
 6 
 7 bool Find(int array[][4],int search_number)
 8 {
 9     bool result=false;
10     int i=0;
11     int j=column-1;
12     int temp;//=array[i][j];
13     
14     while(i<=row&&j>=0)
15     {
16         temp=array[i][j];
17         if(search_number==temp)
18         {
19             result=true;
20             break;
21         }
22         else if(search_number>temp)
23             i++;
24         else
25             j--;
26     }
27     return result;
28 }
29 
30 int main()
31 {
32     int array[][4]={ {1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15} };
33     int search_number;
34     for(search_number=1;search_number<16;search_number++)
35     {
36         if(Find(array,search_number))
37             cout<<"查找"<<search_number<<":Yes"<<endl;
38         else
39             cout<<"查找"<<search_number<<":No"<<endl;
40     }
41     return 0;
42 }
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-07-21
  • 2021-12-12
  • 2021-12-24
  • 2021-07-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-11-10
  • 2021-08-29
相关资源
相似解决方案