(矩阵中的数字) 有一个 n*n(1<=n<=5000
(矩阵中的数字) 有一个 n*n(1<=n<=5000) 的矩阵 a, 对于 1<=i < n,1<=j<=n, a[i,j] < a[i + 1,j] a[j,i] < a[j,i+1] 。即矩阵中左右相邻的两个元素,右边 的元素一定比左边的大。上下相邻的两个元素,下面的元素一定比上面的大。给定矩阵 a 中的一个数字 k,找出 k 所在的行列(注意:输入数据保证矩阵中的数各不相同) 。
#include <stdio.h>
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;
scanf( "%d", &n );
for (i = 1;i <= n;i ++)
for (j = 1;j <= n;j ++)
scanf( "%d", &a[i][j]);
scanf( "%d", &k );
FindKPosition();
printf("%d %d\n", answerx, answery);
return 0;
}答案
第1空:j++; / j +=1; / j=j+1;
第2空:a[i][j] > k
第3空:a[i][j] < k
第4空:answerx = i;
第5空:answery = j;