題目描述:
有若干張郵票,要求從中選取最少的郵票張數湊成乙個給定的總值。
如,有1分,3分,3分,3分,4分五張郵票,要求湊成10分,則使用3張郵票:3分、3分、4分即可。
輸入
有多組資料,對於每組資料,首先是要求湊成的郵票總值m,m<100。然後是乙個數n,n<20,表示有n張郵票。接下來是n個正整數,分別表示這n張郵票的面值,且以公升序排列。
輸出
對於每組資料,能夠湊成總值m的最少郵票張數。若無解,輸出0。
樣例輸入
10 5
1 3 3 3 4
樣例輸出
3解題思路:
這道題有兩種解題思路:一是遍歷,可以用廣度優先遍歷完成;二是動態規劃,狀態轉移方程為: total[j] = min。
bfs**:
#include
#include
using
namespace
std;
const
int maxm = 100;
const
int maxn = 20;
int m, n;
int stamp[maxn];
struct node
node(int a, int b, int c): index(a), cnt(b), sum(c) {}
};int bfs()
}return0;}
int main()
printf("%d\n", bfs());
}//fclose(stdin);
return
0;}
dp**:
#include
#define inf 10000
const
int maxm = 100;
const
int maxn = 20;
int m, n;
int stamp[maxn];
int total[maxm];
int min(int a, int b)
total[0] = 0;
for(int i = 0; i < n; i++)}}
return total[m] != inf?total[m]:0;
}int main()
printf("%d\n", dp());
}fclose(stdin);
return
0;}
動態規劃思路參考部落格 清華大學2023年機試 質因數的個數 1207
題目描述 求正整數n n 1 的質因數的個數。相同的質因數需要重複計算。如120 2 2 2 3 5,共有5個質因數。輸入 可能有多組測試資料,每組測試資料的輸入是乙個正整數n,1 n 10 9 輸出 對於每組資料,輸出n的質因數的個數。樣例輸入 120 樣例輸出 5解題思路 雖然是一道水題,但是有...
清華大學2023年機試 遞推數列 1081
題目描述 給定a0,a1,以及an p a n 1 q a n 2 中的p,q。這裡n 2。求第k個數對10000的模。輸入 輸入包括5個整數 a0 a1 p q k。輸出 第k個數a k 對10000的模。樣例輸入 20 1 1 14 5 樣例輸出 8359 解題思路 首先,第一反應是用遞迴解題,...
清華大學2023年機試 進製轉換 1080
題目描述 將m進製的數x轉換為n進製的數輸出。輸入 輸入的第一行包括兩個整數 m和n 2 m,n 36 下面的一行輸入乙個數x,x是m進製的數,現在要求你將m進製的數x轉換成n進製的數輸出。輸出 輸出x的n進製表示的數。樣例輸入 16 10 f樣例輸出 15解題思路 就是進製轉換,但是需要注意的是資...