如何快速在一个二维数组中查找~?

yzty 2012-09-26 10:25:53
比如一个二维数组:
1 2 3
4 5 6
7 8 9
5 8 6
3 7 2

如何快速的查找到竖向的5 8 8 的下一个7?
...全文
524 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
z146cn 2012-09-27
  • 打赏
  • 举报
回复
高级算法吗?
zhanglong19891129 2012-09-27
  • 打赏
  • 举报
回复
横向取;
假如是4行4列
fun(int i,int j)//从第i行j列开始取;
{
for(int n=0;n<3;n++)
{
if(j+3>=4)
{
return myarray[i+1][(j+3)%4];
}
else return myarray[i][j+3];
}
}
真相重于对错 2012-09-27
  • 打赏
  • 举报
回复
不过是4组
i,j i+1,j i+2,j
i,j i+1,j i+1,j+1
i,j i,j+1 i,j+2
i,j i,j+1 ,i+1,j+1
针对数组每个元素,分别取这四组,和要比较的数组比较,相等则取下个数
就可以了
要注意的是小心数组越界
真相重于对错 2012-09-27
  • 打赏
  • 举报
回复
应该很好判断
这三个数在数组中有规律
比如第一个数下标 是 ij 其余两个数的下标 会很快计算出来,直接取 这三个数,一比较就出来了
yzty 2012-09-27
  • 打赏
  • 举报
回复
234的走向可以横着,竖着走,但不能斜着,然后取挨着4的那个数字~,这就是规则,楼上说的对,应该用遍历吧,但是遍历一次估计还找不出来完~
dreamjun 2012-09-26
  • 打赏
  • 举报
回复
马克,完全不懂那么高深的办法,只懂遍历的菜鸟经过~~
babala2009 2012-09-26
  • 打赏
  • 举报
回复
正则表达式 应该可以
dalmeeme 2012-09-26
  • 打赏
  • 举报
回复
随便写了一个:
		int[,] values = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 5, 8, 6 }, { 3, 7, 2 } };
StringBuilder sb = new StringBuilder();
for (int j = 0; j < values.GetLength(1); j++)
{
for (int i = 0; i < values.GetLength(0); i++)
sb.AppendFormat("{0:D3}", values[i, j]);
sb.Append(';');
}
string r = sb.ToString();
Match match = Regex.Match(r, @"(?<=005008008)\d{3}");
if (match.Success)
Response.Write(int.Parse(match.Value));
threenewbee 2012-09-26
  • 打赏
  • 举报
回复
正则表达式引擎采用的算法,当然编译器的词法分析也用到,事实上,在计算机科学中,处处都有状态机。
csdn_风中雪狼 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
构造状态机去捕获匹配。
[/Quote]
不懂,怎么个弄法,
科普下
threenewbee 2012-09-26
  • 打赏
  • 举报
回复
构造状态机去捕获匹配。
快溜 2012-09-26
  • 打赏
  • 举报
回复
用索引去查啊。
yzty 2012-09-26
  • 打赏
  • 举报
回复
自己先顶下
yonglaixiazaide 2012-09-26
  • 打赏
  • 举报
回复
按你的想法 只能遍历了。估计,,复杂度低不下来
[Quote=引用 18 楼 的回复:]
你这个234又是什么样的规则呢。。

引用 16 楼 的回复:
规律就是指定三个数字(比如:234),然后寻找到和4挨着的数字
[/Quote]
yonglaixiazaide 2012-09-26
  • 打赏
  • 举报
回复
你这个234又是什么样的规则呢。。
[Quote=引用 16 楼 的回复:]
规律就是指定三个数字(比如:234),然后寻找到和4挨着的数字
[/Quote]
636f6c696e 2012-09-26
  • 打赏
  • 举报
回复
shy,说了半天还是说不清楚,你多举点例子吧
[Quote=引用 16 楼 的回复:]
规律就是指定三个数字(比如:234),然后寻找到和4挨着的数字
[/Quote]
yzty 2012-09-26
  • 打赏
  • 举报
回复
规律就是指定三个数字(比如:234),然后寻找到和4挨着的数字
lybelmont 2012-09-26
  • 打赏
  • 举报
回复
没规律怎么取......

636f6c696e 2012-09-26
  • 打赏
  • 举报
回复

[Quote=引用 11 楼 的回复:]
程序只是机器,要让机器明白,首先人需要明白
[/Quote]
zhanglong19891129 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

引用 10 楼 的回复:

多谢楼上的,不过这些方法只能对固定的,如果是我想取得带折线的125后面的8呢?

每次取值没有规律???这是玩呢
[/Quote]
LZ的莫非是想怎么取就怎么取,没有规律的/??推荐使用随机函数.........
加载更多回复(4)

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧