1. 程式人生 > >動態規劃程式碼 加註釋

動態規劃程式碼 加註釋

動態規劃的原理就不多講了,網上一大堆,google一下就明白了,直接上程式碼

 1 public class DynamicPlan {
 2     // 100 個人 挖 5 個礦
 3     private static int peopleCount=100;
 4     private static int poolCount=5;
 5     // 挖每個礦時需要的人數
 6     private static int[] peopleNeed={77,22,29,50,99};
 7     // 每個礦可以挖出來的金幣數
 8     private static int
[] goldEach={92,22,87,46,90}; 9 // 挖礦中間過程的備忘 10 private static Integer[][] backup=new Integer[100][5]; 11 public static void main(String[] args) { 12 for(int i=0;i<peopleCount;i++) { 13 for(int j=0;j<poolCount;j++) { 14 backup[i][j]=-1; 15 }
16 } 17 int max=getMaxGold(peopleCount-1,poolCount-1); 18 System.out.println(max); 19 } 20 21 public static int getMaxGold(int peopleCount,int poolNum) { 22 int maxGold=0; 23 //m個人挖n個礦時金幣數的備忘,遇到相同數量時直接得到結果 24 if(backup[peopleCount][poolNum]!=-1) {
25 maxGold=backup[peopleCount][poolNum]; 26 } else if(poolNum==0) { 27 // 只剩下一個礦,人數夠,金幣數為礦值,人數不夠為0 28 if(peopleCount>=peopleNeed[poolNum]) { 29 maxGold=goldEach[poolNum]; 30 } else { 31 maxGold=0; 32 } 33 } else if(peopleCount>=peopleNeed[poolNum]) { 34 // 不是隻剩下一個礦,且人數大於挖當前礦需要的人數, 35 // 挖當前礦時,獲得的最大金幣為 剩下的人數減去挖當前礦需要的人數 去挖 除去當前礦剩下的礦獲得的金幣值 加上當前礦能挖出的金幣值 36 // 不挖當前礦時,獲得的最大金幣為 當前剩下的所有人 去挖 除去當前礦剩下的礦獲得的金幣值 37 // 兩者中的最大值為 剩餘人數挖剩餘礦時獲得金幣的最大值 38 maxGold=Math.max(getMaxGold(peopleCount-peopleNeed[poolNum],poolNum-1)+goldEach[poolNum], 39 getMaxGold(peopleCount,poolNum-1)); 40 } else { 41 // 不是隻剩下一個礦,剩餘人數小於挖當前礦需要的人數, 42 // 當前剩下的所有人數去挖除去當前礦剩下的礦所得的金幣數 43 maxGold=getMaxGold(peopleCount,poolNum-1); 44 } 45 // 將當前人數挖當前礦數獲得金幣的最大值儲存 46 backup[peopleCount][poolNum]=maxGold; 47 return maxGold; 48 } 49 }

相關推薦

動態規劃程式碼 註釋

動態規劃的原理就不多講了,網上一大堆,google一下就明白了,直接上程式碼 1 public class DynamicPlan { 2 // 100 個人 挖 5 個礦 3 private static int peopleCount=100; 4 priv

演算法學習之窮舉--泊松分酒詳細程式碼註釋

1.窮舉思想簡述   窮舉法可謂是計算機程式設計中最經典也最為簡單的一種演算法,其依賴於計算機強大的計算能力來窮盡每一種可能存在的情況,從而達到問題的求解。另外,該法也被稱之為暴力求解法;實際上如果你願意的話,幾乎大多數問題都可以轉換為窮舉求解的過程,但因為窮舉演算法的效率不高,所以它一般被用於一些

“在XML檔案中給程式碼註釋”請注意

   今天,在寫相對佈局時,在控間裡一添加註釋,就直接報錯,不管是用//還是<!-- -->都會報錯。 現在終於弄明白了。   1 android的XML檔案(包括layout下的和val

動態規劃題解D004 添回文串

題目解讀 原題連結: 牛客網 2016校招真題線上程式設計 題目描述 對於一個字串,我們想通過新增字元的方式使得新的字串整體變成迴文串,但是隻能在原串的結尾新增字元,請返回在結尾新增的最短字串。 給定原字串A及它的長度n,請返回新增的字串。保證原串不是迴文串 輸入描述

Eclipse 程式碼註釋模板

        好的習慣養成好的程式碼書寫規範,同樣好得程式碼模組註釋也同樣重要,不管是對於開發人員還是後期運維人員,都能清楚得知道你得想法,對於程式碼模組註釋今天我就來介紹一下。 (第一種) 1.Window——>Preferences——&g

洛谷-【動態規劃】- P1566 等式

題目描述 對於一個整數集合,我們定義“加等式”如下:集合中的某一個元素可以表示成集合內其他元素之和。如集合{1,2,3}中就有一個加等式:3=1+2,而且3=1+2 和3=2+1是相同的加等式,也是這個集合唯一的加等式。給定一個整數集合,程式設計找出其所有的加等式的個數

0-1揹包問題簡單實現程式碼動態規劃

import java.util.Scanner; /** * @ClassName Backpack * @Description 0-1揹包問題 * @Author lzq * @Date 2018/12/6 17:51 * @Version 1.0 **/ class

Vacations(動態規劃貪心)

Vasya hasndays of vacations! So he decided to improve his IT skills and do sport. Vasya knows the following information about each of thisndays: whether

揹包問題,動態規劃求解,matlab程式碼,c++程式碼

最近寫論文接觸到揹包問題,查閱網上一些資料,對於簡單的揹包問題,動態規劃演算法可以求解,最近花時間整理整理。 揹包問題描述: 有編號分別為a,b,c,d,e 的五件物品,它們的重量分別是 2,2,6,5,4,它們的價值分別是 6,3,5,4,6,現在給你個承重為 10 的

談一談修改程式碼註釋的原則和方法

暮鼓集    行走集 原作於2008年06月01日,軟體部培訓稿 我們修改程式碼時少不了要加一些註釋,這基本的原則是“言簡意賅”,只要做到大家能看懂,在版本比較工具(BC及VSS)中能一目瞭然,這就可以了。 下面介紹一些方法供大家參考:

【演算法筆記】動態規劃,三個例題(解題思路與C++程式碼

寫在前面,我想發個感慨:       當年大學時代ACM的時候,動態規劃演算法對鄙人來說一直算得上魔障,有時能敲出來程式碼,有時候狗咬刺蝟無從下嘴。       以至於一直認為動態規劃是ACM的代表演

動態規劃求解數塔問題 程式碼

/* 5 5 8 3 12 7 16 4 10 11 6 9 5 3 9 4 */ #include<iostream> #define maxn 1000 using namespace

IDA實戰分析教程初級篇第一課:給程式碼註釋

各位童鞋大家好,我是小HUA,從今天開始,我將給大家帶來一系列的逆向分析教程,希望大家能夠分享逆向的快樂,本身技術有限,希望大家不要噴我。也希望大家能夠分享自己的技術,為中國夢奮鬥! 今天我們開始學習IDA實戰分析基礎篇第一課,從基礎開始,一點點深入,這樣才會能夠走得更遠

什麼是動態規劃動態規劃典型例題求解+程式碼

class Solution { public: int maximalSquare(vector<vector<char>>& matrix) { int dim=0; int row=matrix.

vim建立程式碼時自動化添註釋

開啟~/.vimrc檔案,在最後一行下面新增如下如下程式碼: autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()" "新建.py,.cc,.java,.sh, "定義函式SetT

動態規劃演算法(後附常見動態規劃例題及Java程式碼實現)

原文連結 一、基本概念     動態規劃過程是:每次決策依賴於當前狀態,又隨即引起狀態的轉移。一個決策序列就是在變化的狀態中產生出來的,所以,這種多階段最優化決策解決問題的過程就稱為動態規劃。 二、基本思想與策略     基本思想與分治法類似,也是

JAVA程式碼—演算法基礎:最少貨幣換錢問題求解(動態規劃

最少貨幣換錢問題求解(動態規劃) 問題:換錢問題 給定一個數組arraydemo,arraydemo中所有的值都為正數且不重複。 每個值代表一種面值的貨幣,每種面值的貨幣可以使用任意張,再給定一個整數aim代表要找的錢數, 求組成aim的最少貨幣數

動態規劃之矩陣練乘括號問題

/* 因為相乘順序會影響標量的乘法大小,所以加括號的位置非常影響乘法結果的大小 */ #include<iostream> using namespace std; void matrix

JAVA程式碼—演算法基礎:數塔問題(動態規劃

數塔問題(使用動態規劃思路求解) 如圖所示,給定一個正整數構成的三角形,如下所示: 在下面的數字三角形中尋找一條從頂部到底邊的路徑, 使得路徑上所經過的數字之和最大。 路徑上的每一步都只能往左下或者右下走。 只需要求出這個最大和即可,不必給出路徑。

【模板題】動態規劃 石子合併、括號匹配、分二叉樹——區間dp問題及其整理

題目大意:輸入一棵樹的中序遍歷,定義一棵子樹的得分為其左子樹的加分×右子樹的加分+根的分數。求最大得分及先序遍歷注意:1、初始化r[i][i]=i,便於輸出2、初始化dp[i][i-1]=dp[i+1][i]=1。因為在區間中選取一點為root時會取到端點,即左(右)子樹為空