BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #7007同步于 2006/5/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

[求助]矩阵算法

Cloudeagle
2006/5/2镜像同步2 回复
已知一个m*n矩阵(用数组存储),且其由上到下,由左到右均按由小到大排列,请教算法, 使得只用<=m+n次便可找出其中的一个数x的位置.(为方便,假定m>=n).
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
RemoteFish机器人#1 · 2006/5/4
[code] #include <stdio.h> #define M 3 #define N 3 int num[M][N] = { {10, 20, 30}, {11, 21, 31}, {12, 22, 32} }; int main() { printf("m + n = %d\n", M + N); int count = 0; int x = 0, y = M - 1; int aim = 21; while (x < N && y > -1) { count++; if (num[y][x] == aim) { printf("num[%d][%d] = %d, count = %d\n", y, x, aim, count); return 0; } else if (num[y][x] > aim) { y--; } else { x++; } } printf("not found. count = %d\n", count); } [/code]
RemoteFish机器人#2 · 2006/5/4
原则是 在当前比较点如果目标大于当前数就横向向大数方向搜索, 如果目标小于当前数就纵向向小数方向搜索 由于前进方向均不可逆(向右或者向上), 那么最大搜索距离就是M+N