邮票组合
1.问题描述
邮局有4种不同面值的邮票,在每个信封上最多能贴5张邮票,面值可以相同也可以不同,要求编程出用这4种面值所能组成的邮资的最大值。
2.问题分析
邮票可以取0,1,2,3,4,5张,一共五张可以采用穷举法
假设邮票有a,b,c,d四种面值的
i为a的张数,j为b的张数,k为c的张数,l为d的张数
穷举法组合,然后求出总的邮资
3.程序
#include<iostream> using namespace std; int main() { int a, b, c, d, i, j, k, l; static int s[1000];//邮资 cin >> a >> b >> c >> d;//输入四种面值邮票
for (i = 0; i <= 5; i++)//i控制a面值邮票的张数,最多5张 for (j = 0; i + j <= 5; j++)//j控制b面值邮票张数,a+b最多5张 for (k = 0; k + i + j <= 5; k++)//k控制c面值邮票张数,a+b+c最多5张 for (l = 0; k + i + j + l <= 5; l++)//l控制d面值邮票张数,a+b+c+d最多5张 if (a * i + b * j + c * k + d * l) s[a * i + b * j + c * k + d * l]; for (i = 1; i <= 1000; i++) if (!s[i]) break; cout << --i << endl; return 0; }