第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