問題:
第一行是乙個數字n
接下來m個數字在陣列a中
要求輸出對應下標使去掉這些數字時剩下的數字之和為n
例如:3 2 4 3 1
此時,程式輸出:
0 20 3 4
1 2 4
2 3**如下:
public class main
public static void main(string args) ;
boolean b = new boolean[a.length]; //表示a的對應項是否選取
g(6, a, 0, 0, b);
}}
思路:b陣列指出a陣列哪些數應該被輸出,是乙個標誌陣列。我們遞迴結束有三個條件,如果當前錯誤大於總錯誤,直接return;如果當前錯誤等於總錯誤,說明這種符合要求,要將此時b陣列對應的a陣列下標輸出。如果k移動到了陣列最後乙個位置甚至大於,那麼也要return,注意這裡的次序不能顛倒。
當對a陣列的元素依次計算時,每乙個元素有兩種情況,如果把這個元素加入到cur_sum中,那麼要cur_sum+=a[k],否則不需要,而這兩種情況都是要考慮的,因此先讓b[k] = false,表示不加,進行遞迴,再讓 b[k] = true,表示加。最後十分重要的一點是不要忘了程式的回溯:b[k] = false,因為b陣列預設是不取的。
乙個問題記錄2014 10 30
問題背景 公升級所有的動態庫,客戶端獲取不到伺服器資料,並且公升級實際伺服器時沒有備份資料 環境涉及lisp,dll,config 問題查詢過程 1 先在實際伺服器上查詢,看日誌,發現可能是 原因。2 然後在測試伺服器上查詢是否是 的原因,但是發現測試伺服器各種缺必要的資料,也就是說測試伺服器不滿足...
乙個Mybatis問題記錄
工作中基本上都會使用mybatis。有一次為了達到控制許可權的效果,又為了最少的修改現有的 使用了自定義的mybatis的外掛程式,在運算元據的時候做一次查詢,判斷是否有許可權操作。這種許可權控制是很暴力且有很多漏洞的。問題1在一次操作中,當引數只有乙個且引數型別為long型時,預設這個引數是表a的...
java遞迴的乙個問題
據說比達格斯理論家,又稱一群在必達格斯領導下工作的古希臘數學家,發現在數字序列 1,3,6,10,15,21 中有奇怪的聯絡 這個數列中第n項由第n 1項加n得到的。效率問題 呼叫乙個方法會有一定的額外開銷。控制必須從這個呼叫的位子轉移到這個方法的開始處。除次之外,傳給這個方法的引數以及 這個方法返...