楼主:
hao1130 (蚊香蝌蚪就决定是U)
2015-04-30 23:30:26开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
VS2012
问题(Question):
大型阵列应用
附上程式:
http://ideone.com/h6Vsjt
一开始产生拉丁方阵,都会先用malloc,先产生一个二为阵列出来
再把值给套进去,小数量是可以执行的,可是超过10000*10000 内存就会爆掉
假设阵列
1 1 1 1 1 ..
1 2 2 1 1 ..
1 1 1 2 2 ..
.
.
.
之后小鲁想到用一维阵列 之后 在free
row的值可以应用到
可是column的数值不知道如何取
跪求版上神人 为小鲁解答
作者:
LPH66 (-6.2598534e+18f)
2015-05-01 00:44:00你输入 size = 10000, 往上会取到 n = 16384size * n 的 int 阵列会吃掉 625M, 这用的有一点凶用一维直接写不是不行, 你要思考你的计算顺序跟打印顺序说不定不止可以拿掉一维
作者:
EdisonX (卡卡兽)
2015-05-01 12:52:00你的方阵里存的不是 1 就是 2 两种状态 , 所以其实可以用bitwise 方式做法 , 甚至它跑出来的结果都是呈现区块状,要设计特殊的资料结构去省空间应该是有机会的。不过... 怎么这拉丁方阵和我在 wiki 查的不一样 @@算了一下 , 这实验数值 100,000 应该是之前有人算过的用 vector< bitset<100000> > 大小约 1.53~1.55 G 左右在 32bits OS 下应是刚好用 .