當前位置:首頁 » 編程語言 » java01背包

java01背包

發布時間: 2022-12-25 18:16:38

java回溯和遞歸的區別,主要什麼回溯怎麼用,有代碼最好

N皇後問題的非遞歸迭代回溯法java代碼實現
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class NQueen {

static int n; // 皇後個數
static int[] x; // 當前解如{0,2,4,1,3}分別代表第1、2、3、4列的行值
static int totle; // 可行方案個數
public static void main(String[] args) {
int input = 0; //輸入n值
int sum = 0; //可行方案個數
String temp; //臨時存儲輸入值
System.out.println("請輸入N後問題的N值:");

try {
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
temp = br.readLine();
input = Integer.parseInt(temp); //將輸入值轉換為int保存
if(input<=0){
throw new IOException("別輸負數好不?");
}
System.out.println("輸入的數是:" + input);

sum = nQueen(input); //調用nqueen方法

System.out.println("可行方案個數為:" + sum); //輸出sum

} catch (IOException e) {
System.out.println(e.getMessage());

}catch (NumberFormatException e){
System.out.println("請輸入數字。。。");
}
}
private static int nQueen(int input) {
n = input; //把輸入給全局變數n
totle = 0; //初始化totle
x = new int[n + 1];
for (int i = 0; i <= n; i++)
x[i] = 0; //初始化x
backtrack(); //調用回溯演算法
return totle;
}
private static void backtrack() {
int k = 1;
while (k > 0) {
x[k] += 1; //第k列皇後向下移一行
while ((x[k] <= n) && !(place(k))){ //如果當前第k列皇後未出界或者和其他皇後沖突
x[k] += 1; //第k列皇後向下移一行繼續尋找
System.out.println("在第"+k+"行 "+"第"+x[k]+"列放置皇後");
System.out.print("當前方案為 ");
for(int i=1;i<=k;i++) //列印尋找策略
System.out.print(x[i]+" ");
System.out.println();
}
if (x[k] <= n) //找到一個值並且未出界
if (k == n) { //已是最後一列說明已找到一個方案
totle++;
System.out.print("可行方案為: ");
for (int i = 1; i <= n; i++)
System.out.print(x[i] + " ");
System.out.println();
} else { //不是最後一列故尋找下一列
k++;
x[k] = 0;
}
else //找到的值已經出界,回退到上一列
k--;
}
}
//判斷皇後是否沖突
private static boolean place(int k) {
for (int j = 1; j < k; j++)
if ((Math.abs(k - j) == Math.abs(x[j] - x[k])) || (x[j] == x[k]))
return false;
return true;
}
}

❷ java動態規劃01背包編程實現,出錯怎麼辦

數組下標越界.
java技術類文章可以關注微信公賬號:碼農工作室

❸ 01背包問題變種:從給定的N個正數中選取若干個數之和最接近M的JAVA寫法

BIAS0:= (C-MA(C,2))/MA(C,2)*100;
BIAS1 := (C-MA(C,12))/MA(C,12)*100;
BIAS2 := (C-MA(C,26))/MA(C,26)*100;
BIAS3 := (C-MA(C,48))/MA(C,48)*100;
HXL:=V/CAPITAL*100;
D1:=INDEXC;
D2:=MA(D1,56);
DR2:=D1/D2<0.94;
E1:=(C-HHV(C,12))/HHV(C,12)*10;
E2:=(C-REF(C,26))/REF(C,26)*10;

❹ java實現01背包,代碼如下,有一個越界異常,已在代碼上標注,給看下唄,若不對給點意見,多謝大俠們.

paks[v-pak[i].cost])

這個地方的問題 , 你看下那個 v - pak[i].cost 這個是會出現負數

❺ 完全背包,多重背包問題。我能求出背包的可得到最大價值,但是怎麼求具體的物品加入了幾件

p://www.wynpc.com/frxz" target="_blank">http://www.wynpc.com/frxz
游戲簡介
凡人修真畫面
《凡人修真》是一款純正仙俠題材的角色扮演類網頁游戲!斬妖屠魔、仙園建設、地標爭奪、航海運鏢凡人修真新手卡 凡人修真新手卡領取、萬人競技、副本冒險等特色游戲系統。 《凡人修真》游戲分為天道、九幽和星宮三大陣營,以劍仙、傀儡、陰陽、魅影和天師為基礎職業,展開玩家在修真界的八方爭奪之路。玩家在游戲中,可以體驗裝備煉造、五大職業培養等中國特色的創新玩法,並領略以秘境副本為特點的PVE玩法以及以遭遇戰、競技戰、國戰為代表的PVP玩法。在《凡人修真》構建的虛擬社區中,玩家或凡人修真新手卡 凡人修真新手卡領取標新立異不同凡響,或行俠仗義闖盪江湖,或號令眾人攻城奪寨。 2010年最受期待的純真仙俠題的角色扮演類網頁游戲,《凡人修真》以主角實力的不斷提升,探尋上古仙魔奧秘,最終飛升成仙為主線,將凡人和仙魔各界不同層次的空間往來依次展現在我們面前。嶄新的畫風、風趣的對白、精密的職業平衡、引人入勝的修真劇情任務、優良的系統和玩法設計,全都貫穿於整個游戲之中。
編輯本段游戲運營商介紹
目前《凡人修真》主要有4399游戲、91玩等平台聯合運營。
4399平台
4399游戲平台是國內最大的網頁游戲平台之一,主要經營目前最熱門的網頁游戲,4399游戲秉承凡人修真新手卡 凡人修真新手卡領取「服務至上、用戶第一」的經營理念,力求給予用戶一個良好、綠色的娛樂平台為目標,打造國際第一流的游戲的平台。如今4399游戲用戶已遍及全世界,擁有龐大、忠實的用戶資源,網路關鍵詞一度排名第一,現在每天的搜索量達二十多萬。
91玩平台
91wan平台以「輕松游戲、快樂生活」為宗旨,以「寓教於樂」為已任,至今同時運營10多款網頁游戲,累積注冊用戶約2000萬,每天活躍100萬以上,為廣大游戲愛好者提供集新奇、趣味、健康於一體的游戲新體驗,全力打造多姿多彩的網上娛樂天地,最終成為旗幟鮮明的中國領先游戲娛樂平台。
編輯本段游戲界面
游戲主界面主要包括五大部分:角色信息部分、參戰散修部分、聊天欄部分、玩家信息部分以及凡人修真新手卡 凡人修真新手卡領取功能菜單部分。
角色信息部分
(1)角色頭像:點擊可以進入玩家信息面板。 (2)國家:您所屬的國家名稱。 (3)等級:您當前角色的等級。 (4)角色名:您的角色名稱。 (5)生命值:顯示當前玩家角色的生命值和最高生命值。 (6)「+」按鈕:點擊自動使用背包葯品恢復生命。 (7)貨幣信息:當前您擁有的元寶、禮券及銅錢數量。 (8)BUFF狀態按鈕:點擊顯示您當前擁有的狀態信息。 (9)防沉迷圖標:防沉迷系統認證鏈接;
參戰散修列表部分
(1)下拉按鈕:凡人修真新手卡 凡人修真新手卡領取點亮下拉按鈕彈出當前參戰散修列表。 (2)頭像:散修小頭像。 (3)等級:當前散修角色的等級。 (4)散修名:您的散修角色名稱。 (5)生命值:顯示當前散修角色的生命值和最高生命值。 (6)「+」按鈕:點擊自動使用背包葯品恢復散修角色的生命。
聊天欄部分
(1)系統信息:顯示玩家獲得經驗、道具、裝備等信息。 (2)聊天頻道選擇:綜合、仙盟、國家、隊伍、私聊頻道。 (3)聊天輸入框:輸入聊天內容,按Enter鍵發送。 (4)聯系在線GM:點擊「GM」,可聯系在線GM。凡人修真新手卡 凡人修真新手卡領取
玩家信息部分
(1)當前所在位置:顯示當前的地點名。 (2)背景音樂:點擊設置音樂和音效。 (3)PK模式:顯示當前玩家所處和平模式或殺戮模式。 (4)當前地點所有玩家:可以看到當前位置的其他玩家,點擊「查看全部」可以看到周圍更多的人。 (5)攻擊:殺戮模式下,可以攻擊其他玩家,即遭遇戰。
功能菜單部分
(1)人物:點擊進入玩家和散修角色基本信息和屬性界面、坐騎界面、散修招募界面,可以看到凡人修真新手卡 凡人修真新手卡領取角色的具體信息。 (2)技能:點擊可以設置護法參戰、學習技能、升級技能、技能設置等相關操作。 (3)仙園:點擊進入玩家的葯園和洞府場景。 (4)背包:有普通背包、裝備背包、寶石背包、任務背包,坐騎背包、葯品背包。 (5)任務:可以查看當前任務、可接任務、日常任務。 (6)交易:交易與市場界面。 (7)仙境:七十二福地、三十六洞天、太古秘境尋寶。 (8)好友:點擊進入可以添加好友、查看好友狀態。 (9)仙盟:方便看到仙盟信息、仙盟成員、仙盟列表、仙盟戰、仙盟商店等。 (10)組隊:點擊查看當前玩家組隊信息。 (11)地圖:清楚看到整個世界的分布,包括本國、其他國家、高級地區信息等。 (12)商店:包括熱賣商店、普通商店、寶石商店和禮券商店,可以方便購買所需物品。 (13)副本傳送:方便玩家直接進入副本據點,查看副本裝備掉落凡人修真新手卡 凡人修真新手卡領取信息。 (14)排行榜:顯示伺服器內玩家的等級、仙盟、散修、榮譽、競技場等排行榜。 (15)信件:接收系統、玩家的來信。 (16)系統設置:點擊可以看到音頻、顯示的設置。 右邊的護法信息框,可查看已招募的護法信息。
編輯本段游戲背景
相傳太古時期妖魔橫行,肆虐於天地之間,人類生存條件極其惡劣,更因妖魔大肆殺戮,幾近滅絕!在人類存亡的最後關頭,有道法通天之仙人,以無上神通將妖魔永世封印於洪荒異境;為讓人類擁有自保之力,不再受妖魔之害,這位仙人在倖存的人類中挑選資質出眾者,傳其修仙之道,然後化為流光消失於天邊……其後,凡人修真新手卡 凡人修真新手卡領取人們為紀念這位仙人,將其尊為萬仙之祖,名喚「昊天」; 仙祖昊天的眾弟子被後世修真者稱為「古修士」,古修士道法通天,壽命堪比日月,能移山填海,御劍飛空,被凡人視為神仙;後來他們紛紛廣收弟子,潛心修煉昊天所留仙法,習得神通廣大的道法,但彼此卻因理念不同相互敵視,相互爭斗數千年;最終,被後人稱為「仙隕之戰」戰爭開始了……此役,隕落的古仙不知幾凡,曾盛極一時的上古修真界漸漸沒落,倖存的古修士紛紛遁入人跡罕至處潛修,不再過問外界之事…… 歲月變遷,滄海桑田;千萬年後,仙祖昊天所布下的封印之力漸微,妖魔相繼自無盡深淵復甦,人間浩劫即將降臨……為與那無窮無盡的妖獸抗衡,修真者紛紛聯合在一起,組成各大修仙者聯凡人修真新手卡 凡人修真新手卡領取盟,共同守衛世間秩序!其中以三個修仙者勢力最為強大,他們分別是天道、九幽、星宮…… 此時,凡間某處小鎮,正有一位少年人,為追尋心中的仙道,毅然踏上修仙之路,探天地至高奧秘,尋上古仙人隕落之秘……
編輯本段陣營介紹
天道 修真界中人為守護天下蒼生,締結仙誓之盟,曰「以吾輩修士之力,扶濟蒼生,以正天道!」 星宮 星宮中人崇尚天地自然無為之道,不拘泥與物,自在凡人修真新手卡 凡人修真新手卡領取灑脫,追尋那飄渺的修仙之道! 九幽 天地不仁,以萬物為芻狗!信奉以己身之力,匡服天地之不公,證升仙之道!

❻ java演算法背包溢出最小值

java演算法背包溢出最小值最小值-1,即最小值+(-1),即1-0000加1-1111,變成0-1111。

最大值+1,即0-1111加0-0001,變成1-0000,即最小值最小值-1,即最小值+(-1),即1-0000加1-1111,變成0-1111,即最大值正數區間和負數區間形成了循環,正數區間最大值+1,就進入了負數區間,負數區間最大值+1,就進入了正數區間。

基本信息

數據結構與演算法課程是電子科技大學於2018年02月26日首次在中國大學MOOC開設的慕課課程、國家精品在線開放課程。該課程授課教師為林劼、戴波、劉震、周益民。據2021年3月中國大學MOOC官網顯示,該課程已開課7次。

數據結構與演算法課程共6個模塊,包括緒論、線性表、查找、排序、遞歸與分治、樹與二叉樹、圖論與貪心演算法、動態規劃等內容。

數據結構與演算法課程是計算機科學與技術的學科基礎課程,也是是計算機圖形學、計算機網路、編譯原理、計算機操作系統等後續課程的基礎理論之一,其應用范圍也早已擴展到圖像處理與模式識別、海量數據挖掘、科學數據處理、復雜網路分析等許多計算機前沿領域。

❼ java實現01背包,一下為項目源碼,報了一個越界異常,哪位大俠給看看.

把第二個循環中的V++修改為V--

for(int i=0;i<4;i++)
{
for(int v=19;v>=0;v--)
{
//max(paks[v],paks[v-pak[i].cost])
if(leave>pak[i].cost&&paks[v]<paks[v-pak[i].cost])
{
paks[v]=pak[i].worth;
total+=pak[i].worth;
leave-=pak[i].cost;
}
}
}

❽ 掌握了這些核心演算法,才能說自己是程序員

1、時間復雜度

2、空間復雜度

一般最先接觸的就是時間復雜度和空間復雜度的學習了,這兩個概念以及如何計算,是必須學的,也是必須最先學的,主要有最大復雜度、平均復雜度等,直接通過博客搜索學習即可。

不用說,鏈表、列表必須,不過重點是鏈表。

特別是優先隊列,再刷題的時候,還是經常用到的,隊列與棧,是最基本的數據結構,必學。可以通過博客來學習。相關文章:

樹狀數組其實我也沒學過,,,,

對於十大演算法的學習,假如你不大懂的話,那麼我還是挺推薦你去看書的,因為看了書,你可能不僅僅知道這個演算法怎麼寫,還能知道他是怎麼來的。推薦書籍是《演算法第四版》,這本書講的很詳細,而且配了很多圖演示,還是挺好懂的。

圖還是比較難的,不過我覺得圖涉及到的挺多演算法都是挺實用的,例如最短路徑的計算等

這方便的只是都是一些演算法相關的,我覺得如果可以,都學一下。像貪心演算法的思想,就必須學的了。建議通過刷題來學習,leetcode 直接專題刷。

我覺得動態規劃是最難的一個演算法思想了,記得當初第一次接觸動態規劃的時候,是看01背包問題的,看了好久都不大懂,懵懵懂懂,後面懂了基本思想,可是做題下不了手,但是看的懂答案。一氣之下,再leetcdoe專題連續刷了幾十道,才掌握了動態規劃的套路,也有了自己的一套模板。不過說實話,動態規劃,是考的真他媽多,學習演算法、刷題,一定要掌握。這里建議先了解動態規劃是什麼,之後 leetcode 專題刷,反正就一般上面這幾種題型。後面有時間,我也寫一下我學到的套路,有點類似於我之前寫的遞歸那樣,算是一種經驗。也就是我做題時的模板,不過感覺得寫七八個小時,,,,,有時間就寫。

對於上面設計到的演算法,我都提供了感覺還不錯的文章,建議大家收藏,然後可以利用零碎的時間進行閱讀,有些人可能會覺得上面的演算法太多,說實話,我覺得不多,特別是對於在校生的,上面涉及到的演算法可以不用很懂,但至少得了解。至於書籍的話,如果你連基本數據結構都還不懂的,建議看《數據結構與演算法》相關書籍,例如《大話數據結構》、《數據結構與演算法分析》。如果你有一定的基礎,例如知道鏈表,棧,隊列,那麼可以看《演算法第四版》,不過這本書是用 Java 實現的,不過我覺得你只要學過 C,那麼可以看的懂。

❾ 關於這個java語言描述的0-1背包問題是否有錯誤

有點問題:
public static void knapsack(int[]v,int[]w,int c,int[][]m)
{
int n=v.length-1;
int jMax=Math.min(w[n]-1,c);
for(int j=0;j<=jMax;j++)
m[n][j]=0;
for(int j=w[n];j<=c;j++)
m[n][j]=v[n];
for(int i=n-1;i>1;i--)
{
jMax=Math.min(w[i]-1,c);
for(int j=0;j<=jMax;j++)
m[i][j]=m[i+1][j];
for(int j=w[i];j<=c;j++)
m[i][j]=Math.max(m[i+1][j],m[i+1][j-w[i]]+v[i]);
}
m[1][c]=m[2][c];
if(c>=w[1])
m[1][c]=Math.max(m[1][c],m[2][c-w[1]]+v[1]);
}
public static void traceback(int[][]m,int[]w,int c,int[]x)
{
int n=w.length-1;
for(int i=1;i<n;i++) {
if(m[i][c]==m[i+1][c])x[i]=0;
else {
x[i]=1;
c-=w[i];
}
x[n]=(m[n][c]>0)?1:0;
}

//int n=w.length-1;
for(int i=1;i<n;i++)
if(m[i][c]==m[i+1][c])x[i]=0;
else {
x[i]=1;
c-=w[i];
}
x[n]=(m[n][c]>0)?1:0;
}

熱點內容
唐plusdmi買哪個配置 發布:2024-05-06 19:36:48 瀏覽:146
汽車安卓屏開燈效果怎麼弄 發布:2024-05-06 19:12:36 瀏覽:76
編譯優化如何推斷變數的值域范圍 發布:2024-05-06 19:11:54 瀏覽:438
修羅雲伺服器 發布:2024-05-06 18:05:18 瀏覽:709
什麼電腦可以安裝安卓系統 發布:2024-05-06 18:05:15 瀏覽:779
金標頂配都有哪些配置 發布:2024-05-06 17:58:22 瀏覽:599
怎麼看配置高低是否換電腦 發布:2024-05-06 17:32:01 瀏覽:968
linux命令查看目錄 發布:2024-05-06 17:24:18 瀏覽:531
sqlvb 發布:2024-05-06 17:24:16 瀏覽:227
分鏡頭腳本軟體 發布:2024-05-06 17:22:54 瀏覽:824