九度1348

来源:互联网 发布:音乐剪辑合并软件 知乎 编辑:程序博客网 时间:2024/04/30 01:45


#include "iostream"using namespace std;int main(int argc, char *argv[]){ int m , n; int t; cin >> m >> n; while (m != 0 && n != 0) {   cin >> t;  int array[m][n];  bool flag = false;  for(int i = 0; i < m; i++)    for( int j = 0; j < n; j++)    {     cin >> array[i][j];    }   if(array[0][0] == t)   {    flag = true;   }  else   {    int rr = 1;    for(rr;rr < m; rr++)    {     if(array[rr][0] == t)     {      flag = true;     }     else if(array[rr-1][0] < t && array[rr][0] > t)     {      int j = 1;            for( j;j < n;j++)      {       if(array[rr-1][j] == t)       {        flag = true;       }      }          }    }       }     if(flag == true)   cout << "Yes";  else   cout << "No";  cin >> m >> n; } return 0;}


思路:

考虑到矩阵每行从左至右递增,每列从上至下递增,假设需要查找的变量为t,则t可以先和左下角元素比较,设左下角元素为arr[row-1][0]。

若t > arr[row-1][0],则t只能和arr[row-1][0]右边的元素比较,即比较t与arr[row-1][1],若t < arr[row-1][0],则t只能与arr[row-1][0]上面的元素比较,即比较arr[row-2][0]。

以此类推,直至找到t,或者走出矩阵。


细节:

第1行,保含内置头文件一般用尖括号。

第6行,变量名尽量表意,这里可以写int row, col;

第12行,可以在循环外预先定义一个大数组,每次循环都定义数组效率比较低。如const int MAXN = 10000;int array[MAXN][MAXN];

0 0
原创粉丝点击