1.硬幣問題
a.題目:給定面值不同的m種硬幣,求支付n元時的最少硬幣數,各硬幣可以重複使用
b.核心思路:關鍵在於使用t[i]j[j]表示用第i種硬幣支付j元的情況,這表示是否使用第i種硬幣
c.**:
//
// created by 葉子 on 2018/2/8.
// 硬幣問題
//#include "iostream"
using namespace std;
static const int nmax = 50000;
static const int infty = ( 1 << 30);
int main()
for ( int i = 0 ; i <=nmax ; i ++) t[i] = infty;
t[0] = 0;
for ( int i = 1 ; i <= m ; i ++)
}cout << t[n] << endl;
return 0;
}
2.揹包問題:
a.現有價值為vi,重量為wi的n個物品,容易為w的揹包,請求出總價值盡可能高並且總重不超過w的總價值的最大值。
b.核心:c[n+1][w+1]是表示前i個物品裝入容量為w的揹包時總價值的最大值
c.**:
//
// created by 葉子 on 2018/2/9.
// 揹包問題
//#include "iostream"
#include "vector"
#include "algorithm"
static const int nmax = 105;
static const int wmax = 10005;
static const int diagonal = 1;
static const int top = 0 ;
using namespace std;
struct item ;
int n,w;
item items[nmax+1];
int c[nmax + 1][nmax + 1],g[nmax+1][wmax+1];
void compute(int &maxvalue,vector&selection)
for ( int i = 1 ; i <= n ; i ++) c[i][0] = 0;
for ( int i = 1 ; i <= n ; i ++)}}
maxvalue = c[n][w];
selection.clear();
for ( int i = n,w=w;i>=1;i--)
}reverse(selection.begin(),selection.end());
}void input()
}int main()
3.最大正方形:
a.題目:求由h*w個小方格組成的一組方格內,除去汙點之外的乾淨瓷磚的最大正方形面積
b.核心:dp[i][j]中儲存著當前座標(i,j)向左上方擴充套件可形成的最大正方形的邊長,然後用動態規劃法依次計算dp[i][j]即可
c.**:
//
// created by 葉子 on 2018/2/9.
// 正方形問題
//#include "cstdio"
#include "algorithm"
using namespace std;
static const int max = 2400;
int dp[max][max],g[max][max];
int getlargestsquare(int h,int w)
}for ( int i = 1 ; i < h ; i ++)else}}
return maxwidth * maxwidth;
}int main(void)
printf("%d\n",getlargestsquare(h,w));
return 0;
}
資料結構 十二 動態規劃
動態規劃一般用於全域性問題,在構造遞迴的時候,一般採用自頂向下分解的方法,先把全域性問題分解成更小的子問題求解。下面舉兩個例子 例子1 有一座高度是10 階的樓梯,從下往上走,每跨一步可以是一級或兩級台階。要求用程式求出一共一共有多少種走法。問題分析建模 首先總共有10 步,假設只剩最後一步就到達第...
高等資料結構 kD Tree
從擁有多個屬性的報表集合 資料庫 中,尋找具有特定屬性且位於指定範圍內的元素,這類問題稱為範圍搜尋。編寫程式,對魔某個二維平面上點的集合,列舉出給定範圍內的點。另外,給定的點集合無法進行點的新增和刪除操作 靜態 輸入 nx0 y0 xn 1 yn 1 qsx0 tx0 sy0 ty0 sxq 1 t...
資料結構(十二)
position binarysearch list l,elementtype x 其中list結構定義如下 typedef int position typedef struct lnode list struct lnode l是使用者傳入的乙個線性表,其中elementtype元素可以通過 ...