作者:
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 下應是剛好用 .