dp(dynamic programming)
前人的總結,個人感覺是不錯的,點一點試試
看了感覺雲裡霧裡的,就想著去做個題試試,所以↓做了一下下面這個題
題目背景
uim神犇拿到了uoi的ra(鐳牌)後,立刻拉著**小a到了一家……餐館,很低端的那種。
uim指著牆上的價目表(太低階了沒有選單),說:「隨便點」。
題目描述
不過uim由於買了一些輔(e)輔(ro)書,口袋裡只剩mm元(m \le 10000)(m≤10000)。
餐館雖低端,但是菜品種類不少,有nn種(n \le 100)(n≤100),第ii種賣a_ia
i 元(a_i \le 1000)(a
i ≤1000)。由於是很低端的餐館,所以每種菜只有乙份。
小a奉行「不把錢吃光不罷休」,所以他點單一定剛好吧uim身上所有錢花完。他想知道有多少種點菜方法。
由於小a肚子太餓,所以最多只能等待11秒。
輸入輸出格式
輸入格式:
第一行是兩個數字,表示nn和mm。
第二行起nn個正數a_ia
i (可以有相同的數字,每個數字均在10001000以內)。
輸出格式:
乙個正整數,表示點菜方案數,保證答案的範圍在intint之內。
輸入輸出樣例
輸入樣例#1:
4 41 1 2 2
輸出樣例#1:
3
結果我他媽竟然用的是dfs???
//小a選菜
//看到這種問幾種選法的問題,就情不自禁的想用dfs。。。
#include #include using namespace std;
const int max = 10000;
int dp[max][max];
int n, m;
int cnt = 0;
int price[max];
bool vis[max];
int pos[max];
//解決非重複元素的排列
void dfs(int money, int start)
dfs(0, 0);
cout << cnt;
return 0;
}//做是做出來了,但是這兒用的不是動態規劃啊 啊啊啊啊!!!!!
//但是說好的動態規劃呢。。。。總不能鴿了吧
//所以下面
定義f[i][j]為用前i道菜用光j元錢的辦法總數,其狀態轉移方程如下:
(1)if(j==第i道菜的**)f[i][j]=f[i-1][j]+1;
(2)if(j>第i道菜的**) f[i][j]=f[i-1][j]+f[i-1][j-第i道菜的**];
(3)if(j《第i道菜的**) f[i][j]=f[i-1][j];
說的簡單一些,這三個方程,每乙個都是在吃與不吃之間抉擇。若錢充足,辦法總數就等於吃這道菜的辦法數與不吃這道菜的辦法數之和;若不充足,辦法總數就只能承襲吃前i-1道菜的辦法總數。依次遞推,在最後,我們只要輸出f[n][m]的值即可。
#include#include#includeusing namespace std;
int a[101],f[101][10001]=;
int main()
cout<
return 0;
}
溜了溜了
學習python,從入門到放棄(6)
昨日留下了乙個猜年齡的 作業用於鞏固前面所學知識,今日給定了標準答案。我也給出了我的答案。對比來看老師的 簡潔明瞭,用稍少的 完成了目標,我的 雖然有些冗長而且有重複的 塊,但是新增了年齡隨機數還有在輸入y n的時候考慮了輸入別的內容的情況。型別轉換 str 可以轉換所有基本資料型別。索引與切片 字...
php從入門到放棄 Day5
2016 9 16 22 57 14 day5.php html css基礎 css全稱 層疊樣式表 cascading style sheets 它主要是用於定義html內容在瀏覽器內的顯示樣式,如文字大小 顏色 字型加粗等。p 標籤文字塊 css 樣式由選擇符和宣告組成,而宣告又由屬性和值組成。...
React從入門到放棄Day1
1.react的入口檔案為index.js 2.在index.js中,首先需要引入react等元件 import react from react import reactdom from react dom 操作dom html import xiaojiejie from xiaojiejie ...