【樓主】nextrr2012-11-25 16:53
» 在1到49間抽6個不同的數為一組,抽五組。問題來了,運行結果每組數都有可能有幾個數相同,怎么破?用if判斷是不是與上一個數相同,控制cout與heng++?但是不用數組的情況下要怎么表示上一個數? 改動
作者:euphoria2012-11-25 16:55
6組數,每組6個為啥判定一個是5一個是6呢...
作者:nextrr2012-11-25 16:56
Post by euphoria (2012-11-25 16:55)
作者:柒刖2012-11-25 17:03
純灌水,, 感覺學這個的都是大神級別的人物
作者:涅盤的碼農2012-11-25 17:07
用hashset或者treeset
作者:隨欲的風2012-11-25 17:10
看你的代碼風格我覺得你以前有可能是學java的。。。。開始上手就是C/C++的話大括號一般不這樣搞。
作者:krela2012-11-25 17:14
用個容器把產生的值先存起來,每當產生一個新隨機值先在容器里判斷有沒有,沒有的話就打印,插入容器
作者:三橙賊法牧2012-11-25 17:17
這樣一點也不“面向對象”……你要抽出不同的數,是不可能一點兒額外空間都不使用的。要是我做的話,就弄一個1到49的鏈表串起來,你每從表里取掉一個數,就從表里剔除掉一個數,這樣就不會重復……但是浪費時間,N很小的情況下這樣鬧著玩不錯。你是從N個數里取M個不同的。一般情況都是N很大而M很小,老老實實比較已經取出的<M個數是否重復就是了。這M個數用紅黑樹或者普通樹保存起來就查得快了。如果逐個查詢會很慢。如果N巨大而M也相對較大,則引入新的數據結構來搞定。好像叫什么2B樹。
作者:oneday5212012-11-25 17:20
用數組x(50),元素是布爾量。初始化所有元素為零。開始獲取六個數字:隨機抽取一個數,如果抽出的是z,檢查x(z)是否為0,是0則成功獲取z,并設置它為1;如果是1,則不成功,重新獲取一次。重復上述步驟直到六個數字獲取完成改動
作者:oneday5212012-11-25 17:26
你這題要求是什么啊?床幻靼
作者:九尾感應炮2012-11-25 17:29
作者:nextrr2012-11-25 17:31
c都說了還沒學數組了。。你們說那些高端的詞語我看不懂啊。。。改成這樣,但是編譯沒通過。
作者:sun1988012272012-11-25 17:35
搞一個數組,記錄每個數被用的狀態(tài)。開始都為0,哪個數被用了就置為1 c都說了..不懂就去學。 [s:39]
作者:逐水而居2012-11-25 19:34
不用數組,要么你把1到49拼成字符串,中間用逗號分隔,例如“1,2,3,4,……48,49”。然后隨機從字符串中取出數值,并且去除該數值。需要用到一些字符串函數。