有一个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 <cstdio> 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--; } __[1]__ while (a[i][j] != k) { while (__[2]__ && i > 1) i--; while (__[3]__ && j <= n) j++; } __[4]__ __[5]__ } 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; }