邮票组合

发布时间 2023-05-26 23:59:49作者: 祝我好運

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; }