[Jobdu]タイトル1384:2 D配列での検索
6404 ワード
タイトルの説明:
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が見つからないことを表す.
サンプル入力:
サンプル出力:
ヤング行列.しかしこの問題にはバグがあり,先に与えられた目標値の後に与えられたマトリクスは,マトリクスを入力する際に判断できる.行列は保存する必要はありません.
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
ヤング行列.しかしこの問題にはバグがあり,先に与えられた目標値の後に与えられたマトリクスは,マトリクスを入力する際に判断できる.行列は保存する必要はありません.
1 #include <cstdio>
2
3 int m, n;
4 int t;
5 int a[1000][1000];
6
7 void getRes() {
8 int row = 0, col = n - 1;
9 while (col >=0 && row < m) {
10 if (a[row][col] > t) {
11 --col;
12 } else if (a[row][col] < t) {
13 ++row;
14 } else {
15 printf("Yes
");
16 return;
17 }
18 }
19 printf("No
");
20 }
21
22 int main() {
23 while (scanf("%d %d", &m, &n) != EOF) {
24 scanf("%d", &t);
25 for (int i = 0; i < m; ++i) {
26 for (int j = 0; j < n; ++j) {
27 scanf("%d", &a[i][j]);
28 }
29 }
30 getRes();
31 }
32 return 0;
33 }
34
35 /**************************************************************
36 Problem: 1384
37 User: hupo250
38 Language: C++
39 Result: Accepted
40 Time:670 ms
41 Memory:4928 kb
42 ****************************************************************/