第28题:矩阵中的数字

有一个 n×n (1≤n≤5000) 的矩阵 a,满足以下条件:
对于 1≤ii,j < ai+1,j 且 aj,i < aj,i+1(即矩阵中左右相邻元素右边更大,上下相邻元素下面更大)。
给定矩阵 a 中的一个数字 k(输入保证矩阵中数字各不相同),找出 k 所在的行列。

查找数字k位置的程序

#include <iostream> using namespace std; int n,k,answerx,answery; int a[5001][5001]; void FindKPosition() { int i = n,j = n; while (j > 0) { if (a[n][j] < k) break; j --; } ① while (a[i][j] != k) { while ( ② && i > 1) i --; while ( ③ && j <= n) j ++; } ④ } int main() { int i,j; cin >> n; for (i = 1;i <= n;i ++) for (j = 1;j <= n;j ++) cin >> a[i][j]; cin >> k; FindKPosition(); cout << answerx << " " << answery << endl; return 0; }

选择题

(1) ①处应填()。
A. j--
B. j++
C. i++
D. i--
(2) ②处应填()。
A. a[i][j] > k
B. a[i][j] < k
C. a[i][j] <= k
D. a[i][j] != k
(3) ③处应填()。
A. a[i][j] > k
B. a[i][j] < k
C. a[i][j] >= k
D. a[i][j] != k
(4) ④处应填()。
A. answerx = i + 1
B. answerx = i - 1
C. answerx = j
D. answerx = i
(5) ⑤处应填()。
A. answery = j + 1
B. answery = j - 1
C. answery = i
D. answery = j