Fw: [問題] 如何實做一個不會重複的"六進位"?

看板Prob_Solve (計算數學 Problem Solving)作者 (大笨羊)時間13年前 (2011/11/11 18:11), 編輯推噓1(104)
留言5則, 1人參與, 最新討論串1/1
※ [本文轉錄自 C_and_CPP 看板 #1ElEpQow ] 作者: wa007123456 (大笨羊) 看板: C_and_CPP 標題: [問題] 如何實做一個不會重複的"六進位"? 時間: Fri Nov 11 17:37:27 2011 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): 是這樣的,我想寫一個程式,裡面有1~6的字元 最高位數是6位,且陣列上的值不可重複 例如: arr[0][1][2][3][4][5] <=正確! arr2[0][0][1][2][3][4] <=錯誤! 小弟其實想用程式去算出一個題目 就是有一個密碼箱,有六個數字要填,其中1,2不能排首兩位 3,4不能排中間兩位 5,6不能排後面兩位 我大概知道是6!=720 是全部的可能(未含條件) 而含條件後的答案是80 (經過排列組合的計算) 我已經想了一個下午了.... 但是還是沒有頭緒 小弟我是個初學者@@ 有請先輩們賜教>< 感謝 ps:這是我突發奇想的問題... 另外有沒有大大可以推薦有關"資料結構"的書籍呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.228.221.15 ※ 編輯: wa007123456 來自: 125.228.221.15 (11/11 17:40)

11/11 17:43, , 1F
排列組合喔...
11/11 17:43, 1F

11/11 17:45, , 2F
我可以說版規2嗎..XD 請附上自己的想法
11/11 17:45, 2F
可能要先寫好排列組合常用的運算 像是C(X,Y) ,P(X)...還有數階的函式(用遞迴) 但是最大的問題就是 程式沒辦法做"分類"的動作 他只能很暴力的算出來吧@@? 畢竟電腦是計算機.....但是不寫出這題我不會死心的.. ※ 編輯: wa007123456 來自: 125.228.221.15 (11/11 17:48)

11/11 17:49, , 3F
才6!就六層loop 最後一層做判斷 符合的話就輸出阿....
11/11 17:49, 3F
我也是寫了六個for.. 但是問題就是在..每位不能有重複的數字@@ 不然判斷 count 會多出許多不正確的答案@@

11/11 17:51, , 4F
最暴力的方式就是把所有可能的解都生出來再刪掉...XD
11/11 17:51, 4F
※ 編輯: wa007123456 來自: 125.228.221.15 (11/11 17:52)

11/11 17:52, , 5F
開個陣列記錄有沒有被用過不就得了
11/11 17:52, 5F

11/11 17:53, , 6F
搞成全域然後遞迴一下 就比for高級了"一點點"....
11/11 17:53, 6F

11/11 17:54, , 7F
這不就是 next_perm 的東西嗎?
11/11 17:54, 7F

11/11 17:54, , 8F
對阿(死) 我是覺得你先把程式寫出來 再去改他
11/11 17:54, 8F

11/11 17:55, , 9F
樓上@@ 那是甚麼?
11/11 17:55, 9F

11/11 17:55, , 10F
我很不擅長這種問題耶,有需要加強嗎...?
11/11 17:55, 10F

11/11 17:55, , 11F
oh,有條件限制的,我的作法和 james 一樣,合條件的話才
11/11 17:55, 11F

11/11 17:55, , 12F
6個for也好阿 看看哪邊重複 哪邊多餘 再做修正
11/11 17:55, 12F

11/11 17:55, , 13F
原po可以拿「c++ next_permutation」去google看看
11/11 17:55, 13F

11/11 17:56, , 14F
阿 有一點頭緒了!
11/11 17:56, 14F

11/11 17:56, , 15F
讓他練練吧 雖然我以前也都#include <algorithm> ...
11/11 17:56, 15F

11/11 17:56, , 16F
先記錄全部的數字 把不合格的篩檢 最後在弄上分類
11/11 17:56, 16F

11/11 17:56, , 17F
加到 solution,類似的東西 :#1DU99hiU ,最後慢慢check.
11/11 17:56, 17F

11/11 18:08, , 18F
補一下, 轉去 Prob_Solve 可能較適合。
11/11 18:08, 18F
※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: wa007123456 (125.228.221.15), 時間: 11/11/2011 18:11:40

11/11 20:33, , 19F
這讓我想到大一時在寫八皇后的問題,怎麼都想不出來
11/11 20:33, 19F

11/11 20:33, , 20F
後來有人提到用遞迴,將所有情形都找出來
11/11 20:33, 20F

11/11 20:33, , 21F
然後每一種檢查是否符合條件
11/11 20:33, 21F

11/11 20:34, , 22F
原以為只能這麼做,結果後來看到一位天才的同學
11/11 20:34, 22F

11/11 20:34, , 23F
用八層迴圈一樣很快就跑出來,真的很天才。
11/11 20:34, 23F
文章代碼(AID): #1ElFJU4I (Prob_Solve)
文章代碼(AID): #1ElFJU4I (Prob_Solve)