剣指OFFERの2次元配列での検索(9度OJ 1384)

2672 ワード

タイトルの説明:


2 D配列では、各行が左から右に増加し、各列が上から下に増加した順にソートされます.関数を完了し、このような2次元配列と整数を入力して、配列にその整数が含まれているかどうかを判断してください.
 

入力:


入力には、各テストケースについて、複数のテストケースが含まれる場合があります.
入力される第1の動作の2つの整数mおよびn(1<=m,n<=1000):入力するマトリクスの行数および列数を表す.
入力された2行目には、検索する数値を表す整数t(1<=t<=1000000)が含まれます.
次のm行は、各行にn個の数があり、問題が与えるm行n列を表す行列(行列は、問題記述に示すように、各行が左から右に増加する順序で並べ替えられ、各列が上から下に増加する順序で並べ替えられる.
 

出力:


各テストケースに対応し、
出力「Yes」は、2次元配列で数値tが見つかったことを表します.
出力「No」は、2次元配列に数字tが見つからないことを表す.
 

サンプル入力:

3 3
5
1 2 3
4 5 6
7 8 9
3 3
1
2 3 4
5 6 7
8 9 10
3 3
12
2 3 4
5 6 7
8 9 10

 

サンプル出力:

Yes
No
No

コード:

#include <stdio.h>
#include <stdlib.h>

//by xingoo
int main(void){ int m,n,findnum,flag; while(scanf("%d %d",&m,&n) != EOF && (m>=1 && m<=1000 && n>=1 && n<=1000)){ scanf("%d",&findnum); flag = 0; int i,num; for(i=0;i<m*n;i++){ scanf("%d",&num); if(num == findnum) flag = 1; } if(flag) printf("Yes
"); else printf("No
"); } return 0; }