演算法 四處碰壁回溯法01入門案例

2021-10-07 13:32:43 字數 1014 閱讀 2176

素數環問題

問題描述:

將資料1~n放入含有n個節點的環,保證任意相鄰的兩個數的和為素數。

演算法基本思路還是比較簡單的,首先將第乙個數放到儲存資料的陣列的0索引處,

接著開始放索引1的值一直放到n-1處,但是在這個過程中:

①注意放的時候是否會有重複

②放的時候是否滿足和為素數的條件

如果上面條件都滿足了就進入下乙個位置填寫,如果不滿足就回退,直到全部填完為止。

**實現:

import org.junit.test;

/** * @author jacktan

*/public

class

maintest

}public

int[

]primecircle

(int n)

}//如果a[k]=n+1說明要回退,如果a<=n說明繼續下一步

if(a[k]

!=n+1)

else

}else

}return a;

}//判斷是否滿足要求

boolean

check

(int

a,int k)

//判斷是否重複

for(

int i=

0;i//判斷首尾是否滿足要求

if(k==a.length-1)

}return

true;}

//判斷是不是素數

boolean

isprime

(int n)

}return

true;}

}

輸出結果:

123

4765

891013

1615

1417

2011

1219

18

揭秘四處碰壁小球之命運

有這麼乙個問題,初看起來人畜無害,但細思極恐,和大家分享。將小球的速度分解為沿x軸的v x和沿y軸的v y。因正方形邊長等於1,不妨令v x eb a,v y fb b。小球可以從e左側或者右側返回。從e左側返回時,小球沿兩軸走過的路程都是偶數。寫成方程就是 frac frac,m,n in mat...

演算法 回溯法 0 1揹包問題

fishing pan 回溯法是一種非常有效的方法,有 通用的解題法 之稱。它有點像窮舉法,但是更帶有跳躍性和系統性,他可以系統性的搜尋乙個問題的所有的解和任一解。回溯法採用的是深度優先策略。回溯法解決問題一般分為三個步驟 1 針對所給問題,定義問題的解空間 2 確定易於搜尋的解空間結構 3 以深度...

演算法實驗 回溯法求解0 1揹包問題

通過剪枝和衝突,走遍所有可能的選擇,最終得到最優解 1 每個節點有兩種選擇方法,依次對所有可能的方法進行遍歷 2 在遍歷的過程中通過設定一全域性變數用來比較所有的解法的結果,最終得到最優解 lagestv 0bestx 1 2 def jianzhi i,n,c,w,ww if i n return...