碰到這樣一個問題。給定一組數組作為基數,然后給一個數字,求出所有以數組值為基數的數量和為給出數字值的組合。舉例簡單說明吧:假定一個簡單的數組arr[3]={2,3,6},然后給出數字8的組合有三種:(2->4); (6->1)(2->1); (3->2)(2->1)給出數字9的組合也有三種:(3->3); (6->1)(3->1); (2->3)(3->1)PS:本人用C#寫了個三重循環加遞歸,感覺有點復雜了,希望有高手幫忙分析下有沒有什么簡單的算法或者數據結構的解決思路。題目本身也不算難吧,但自己實際寫寫也花了點時間,所以想提出問題,請各位高手幫忙分析分析,謝謝。除了蠻力遍歷沒有什么高端的算法么?
1 回答

鴻蒙傳說
TA貢獻1865條經驗 獲得超7個贊
可不可以這樣子一下,
你有一個基數數組,一個給定的數字。
可以確定一個最大可能的基數的系數,也就是給定的數字除以基數數組里的每一個數,得到的最大的那個數就是可能的最大的系數。
然后你可以造一個(最大系數+1)進制類,這個仿照10進制建個類應該可以做到
然后進行一次遍歷,范圍是從0到(最大系數+1)進制的數組長度位的最大值
然后對數組的第1,2。。。個元素分別乘以循環的數的第1,2。。。位上的數,查看相加的結果是不是等于給定的數字,
等于的話則說明這組數字是可用的。這樣建一個類,一次循環就可以了。
添加回答
舉報
0/150
提交
取消