該題目主要使用動態規劃的方法,解題過程中模擬實際的使用方法
#include
#include
#define max 1000000000
using
namespace
std;
int minstep;
vector
allvalue;//存放的是所有的面值
int value;//需要的面值
//三個引數依次是當前的所有值,陣列的下標,還有當前的總步數
void solve(int sum, int index, int step)
return;
}if (sum>value)//如果現在的面值大於所需的面值,則返回
return;
if (index < 0)//如果找到最初的還沒有所需的面值,則返回無解
solve(sum + allvalue[index], index - 1, step + 1);//分為兩種情況,一種是選擇當前的
solve(sum, index - 1, step);//另一種是不選擇當前的
}int main()
//輸入完成
solve(0, nvalue - 1, 0);//因為陣列是從小到大排列,所以從n-1的下標開始選
minstep = minstep == max ? 0 : minstep;
cout
<< minstep << endl;
}return
0;}
題目1209 最小郵票數
題目描述 有若干張郵票,要求從中選取最少的郵票張數湊成乙個給定的總值。如,有1分,3分,3分,3分,4分五張郵票,要求湊成10分,則使用3張郵票 3分 3分 4分即可。輸入 有多組資料,對於每組資料,首先是要求湊成的郵票總值m,m 100。然後是乙個數n,n 20,表示有n張郵票。接下來是n個正整數...
1209 最小郵票數
1209 最小郵票數.cpp 定義控制台應用程式的入口點。題目1209 最小郵票數 時間限制 1 秒記憶體限制 32 兆特殊判題 否提交 2604解決 871 題目描述 有若干張郵票,要求從中選取最少的郵票張數湊成乙個給定的總值。如,有1分,3分,3分,3分,4分五張郵票,要求湊成10分,則使用3張...
最小郵票數
時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 1680 解決 558 題目描述 有若干張郵票,要求從中選取最少的郵票張數湊成乙個給定的總值。如,有1分,3分,3分,3分,4分五張郵票,要求湊成10分,則使用3張郵票 3分 3分 4分即可。輸入 有多組資料,對於每組資料,首先是要求湊成的...