博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何遍历维数和各维上限未定的多维数组
阅读量:6198 次
发布时间:2019-06-21

本文共 1220 字,大约阅读时间需要 4 分钟。

这个题目,不方便使用递归!

直觉告诉我,可以用两层遍历,外面一层是维数,里面一层是每一维。但实际上,要做起来很难!

最后决定最外层循环用元素个数,里面配合使用维数的循环,最终解决问题!

 

static void ArrEnum(Array arr, Action
func){ Int32[] ix = new Int32[arr.Rank]; Int32 rank = 0; for (int i = 0; i < arr.Length; i++) { // 当前层以下都清零 for (int j = rank + 1; j < arr.Rank; j++) { ix[j] = 0; } // 设置为最底层 rank = arr.Rank - 1; //do something //arr.SetValue(i, ix); func(ix); // 当前层递加 ix[rank]++; // 如果超过上限,则减少层次 while (ix[rank] >= arr.GetLength(rank)) { rank--; if (rank < 0) break; ix[rank]++; } }}static void Test2(){ Int32[, , ,] arr = new Int32[24, 24, 24, 24]; Int32 n=1; ArrEnum(arr, ix => arr.SetValue(n++, ix)); ArrEnum(arr, delegate(Int32[] ix) { Console.Write("["); for (int i = 0; i < ix.Length; i++) { if (i > 0) Console.Write(", "); Console.Write(ix[i]); } Console.Write("]\t"); Console.WriteLine(arr.GetValue(ix)); });}
我不相信神话,我只相信汗水!我不相信命运,我只相信双手!
分类:
本文转自大石头博客园博客,原文链接:http://www.cnblogs.com/nnhy/archive/2011/05/18/2050004.html,如需转载请自行联系原作者
你可能感兴趣的文章
.NET Framework想要实现的功能
查看>>
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/Lin
查看>>
Office365 同步失败 - 排查邮件冲突造成的错误
查看>>
第三章 jQuery中的DOM操作
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
ubuntu安装oh my zsh
查看>>
PROC系列之/proc/pid/status
查看>>
python3 turtle使用报错,代码没有对齐
查看>>
我的友情链接
查看>>
windows 10常用快捷键汇总
查看>>
我的友情链接
查看>>
Linux系统安装后的基础优化-基于CentOS(5.8/6.4)
查看>>
Device eth0 does not seem to be present, delaying initialization
查看>>
android创建文件夹
查看>>
JUC——线程池技术相关内容
查看>>
我的友情链接
查看>>
shell编程——if语句
查看>>
Linux上文件的特殊权限SUID,SGID,SBIT详解
查看>>
js实例学习 -- onload标签
查看>>