2 回答

TA貢獻(xiàn)14條經(jīng)驗(yàn) 獲得超23個(gè)贊
歸根結(jié)底就是如何產(chǎn)生隨機(jī)數(shù)且隨機(jī)數(shù)不重復(fù),產(chǎn)生隨機(jī)數(shù)的話,只需要先通過srand()設(shè)定隨機(jī)數(shù)種子,然后通過調(diào)用rand()產(chǎn)生隨機(jī)數(shù)。
srand(time(NULL)); rand();
對(duì)于如何使其生成的數(shù)字不重復(fù),我暫時(shí)能想到以下幾種方案:
每次新生成一個(gè)數(shù)字,都對(duì)整個(gè)二維數(shù)組進(jìn)行遍歷,如果新生成的數(shù)字以及存在,則重新生成一個(gè)數(shù)字。
將生成的數(shù)字保存起來,如果新生成的數(shù)字已經(jīng)被保存過,則重新生成一個(gè)數(shù)字。
手動(dòng)設(shè)定或隨機(jī)生成一個(gè)隨機(jī)數(shù)的列表,每次隨機(jī)從中選取一個(gè),隨后從列表中將其刪除。
對(duì)于以上三種方案:
對(duì)于1號(hào)方案,是最容易實(shí)現(xiàn)的,但是如果數(shù)組空間較大,是一個(gè)速度很慢,編寫簡單的方案。
對(duì)于2號(hào)方案,將數(shù)字保存起來,又需要能夠快速的判斷一個(gè)新的數(shù)字是否已經(jīng)存在于其中,需要使用二叉樹來進(jìn)行存儲(chǔ),實(shí)現(xiàn)起來較為復(fù)雜,但是優(yōu)點(diǎn)是速度快,編寫復(fù)制的方案。
對(duì)于3號(hào)方案,通過手動(dòng)輸入或者通過1號(hào)方案較慢的生成列表,有了列表之后,進(jìn)行之后的操作應(yīng)該是這3個(gè)方塊最快的,但是缺點(diǎn)也顯而易見,改動(dòng)數(shù)據(jù)范圍,整個(gè)列表都需要重新生成。

TA貢獻(xiàn)46條經(jīng)驗(yàn) 獲得超18個(gè)贊
C語言的話,還算簡單的,難點(diǎn)在于如何生成隨機(jī)數(shù)。然后循環(huán)給定義二維數(shù)組入值就好了。
大佬需要我給你寫剩下的嗎?
- 2 回答
- 0 關(guān)注
- 3513 瀏覽
添加回答
舉報(bào)