[問題]迴圈中考慮陣列的限制?!

看板C_and_CPP (C/C++)作者 (殺手)時間14年前 (2012/05/01 18:52), 編輯推噓5(5031)
留言36則, 6人參與, 最新討論串1/1
使用codeblocks 寫C++ 遇到一個困難 有一個陣列 但是每一格都有限制上限, 例如: a[0]=2,a[1]=3,a[2]=1,a[3]=2,a[4]=4 a陣列的數值 a[0]=4,a[1]=2,a[2]=0,a[3]=3,a[4]=1 然後再用一個迴圈 用上限減掉現值 , 即可找出不符合的空格 然後多出來的值 再隨機分給其他還沒滿的空格 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 我卡在這一個步驟 因為若隨機分配之後, 該空格也滿了 再尋找下一個空格 那要怎麼避開那些已經額滿的空格? (未完成的程式碼) http://ideone.com/59jeg 假設a陣列的值為已知!!!! 懇請各位高手賜教~~~! 謝謝您~! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.243.66

05/01 19:04, , 1F
這樣可以嗎 http://ideone.com/dtmjU
05/01 19:04, 1F

05/01 19:11, , 2F
05/01 19:11, 2F

05/01 19:12, , 3F
樓主原來的辦法有點麻煩= =" 樓上卡好
05/01 19:12, 3F

05/01 19:12, , 4F
喔不...被搶了 是樓樓樓上
05/01 19:12, 4F

05/01 19:19, , 5F
x大 不太像是這個意思ㄟ 我是將問題簡化了 a陣列的值不是隨機
05/01 19:19, 5F

05/01 19:19, , 6F
其實a陣列在之前的程式已經計算好了 所以我才用了c陣列來計算
05/01 19:19, 6F

05/01 19:20, , 7F
看看a陣列超過多少 然後再把超過的分給其他未滿的格子Y
05/01 19:20, 7F

05/01 19:25, , 8F
s大 這一段 i<(b[j]-a[j]); 其值不是負的嗎???
05/01 19:25, 8F

05/01 19:32, , 9F
唔, 你這補充讓我搞不懂你的問題在哪了...a 陣列不是隨機?
05/01 19:32, 9F

05/01 19:34, , 10F
抱歉~ 已修正! a陣列的值其實早已經算好(先不管其限制)
05/01 19:34, 10F

05/01 19:34, , 11F
然後用了c陣列 來計算a陣列的每一格超過多少
05/01 19:34, 11F

05/01 19:35, , 12F
將超過的數值 再隨機分配給其他未滿的格子!
05/01 19:35, 12F

05/01 19:36, , 13F
在分配的同時 又要注意該格子有沒有滿
05/01 19:36, 13F

05/01 19:36, , 14F
大致上問題是如此~!
05/01 19:36, 14F

05/01 19:39, , 15F
這樣的話其實只要算出每格有多少空位之後套一樓的做法即可
05/01 19:39, 15F

05/01 19:39, , 16F
重點不在誰多了多少 而是誰還要多少
05/01 19:39, 16F
※ 編輯: ieck 來自: 140.116.96.183 (05/01 19:40)

05/01 19:41, , 17F
其實你要的就只是把多出來的收一收再隨機分給還缺而已
05/01 19:41, 17F

05/01 19:41, , 18F
文章 跟 程式 已重新修正!
05/01 19:41, 18F

05/01 19:42, , 19F
這樣的話只要知道誰還缺多少就可以直接套用隨機分配了
05/01 19:42, 19F

05/01 19:42, , 20F
L大 我的想法也是如此 但就是卡在隨機分給"缺"的格子
05/01 19:42, 20F

05/01 19:43, , 21F
但是若隨機分 又造成滿格 我不知道怎麼跳到哪一格是未滿的xd
05/01 19:43, 21F

05/01 19:44, , 22F
腦袋打結了 @@"
05/01 19:44, 22F

05/01 20:59, , 23F

05/01 21:02, , 24F
先把 a 超出去的部分放到 c 裡面(正數)
05/01 21:02, 24F

05/01 21:04, , 25F
a 沒超出去的就做一個容量相同的籃子,籃子標上給哪個 a
05/01 21:04, 25F

05/01 21:05, , 26F
一一把 c 丟進隨機的籃子裡,每次檢查 c 有沒有用完
05/01 21:05, 26F

05/01 21:05, , 27F
或籃子有沒有滿
05/01 21:05, 27F

05/01 21:06, , 28F
用完的 c 或滿的籃子就丟掉
05/01 21:06, 28F

05/01 21:14, , 29F
哇~~~!!! 好厲害的方法 我這個豬腦袋永遠想不出來吧 ><"
05/01 21:14, 29F

05/01 21:18, , 30F
用不著貶低自己吧
05/01 21:18, 30F

05/01 21:23, , 31F
好難歐 @@" 我只會玩迴圈會加條件式 解這個問題就卡關好久了
05/01 21:23, 31F

05/01 21:24, , 32F
還是覺得一樓比較好 LZ的解法要多比較兩次= ="
05/01 21:24, 32F

05/01 21:24, , 33F
這個用法我不敢參考 因為我看的有點吃力 ><"
05/01 21:24, 33F

05/01 21:26, , 34F
對於多出來哪格多的如果不在意 只要那結果的話
05/01 21:26, 34F

05/01 21:26, , 35F
linotwo大 謝謝您 耐心地指教~~!!!
05/01 21:26, 35F

05/01 21:27, , 36F
一樓的高手 我用那個法解不出來說 @@" 搞不懂哪裡弄錯=.=?
05/01 21:27, 36F
文章代碼(AID): #1Fdy1fFM (C_and_CPP)
文章代碼(AID): #1Fdy1fFM (C_and_CPP)