商店购物

某商店中每种商品都有一个价格。特殊优惠商品是把一种或几种商品分成一组。并降价销售。编一个程序,计算某个顾客所购商品应付的费用。 要充分利用优惠价以使顾客付款最小。你不能变更顾客所购商品的种类及数量。

输入数据
用两个文件表示输入数据。第一个文件INPUT.TXT描述顾客所购物品(放在购物筐中);第二个文件描述商店提供的优惠商品及价格(文件名为OFF ER.TXT)。 两个文件中都只用整数。
第一个文件INPUT.TXT的格式为:第一行是一个数字B(0≤B≤5),表示所购商品种类数。下面共B行,每行中含3个数C,K,P。 C 代表商品的编码(每种商品有一个唯一的编码),1≤C≤999。K代表该种商品购买总数,1≤K≤5。P 是该种商品的正常单价(每件商品的价格),1≤P≤999。请注意,购物筐中最多可放5*5=25件商品。
第二个文件OFFER.TXT的格式为:第一行是一个数字S(0≤S≤9 9),表示共有S 种优惠。下面共S行,每一行描述一种优惠商品的组合中商品的种类。下面接着是几个数字对(C,K),其中C代表商品编码,1≤C≤9 99。K代表该种商品在此组合中的数量,1≤K≤5。本行最后一个数字P(1≤ P≤9999)代表此商品组合的优惠价。当然, 优惠价要低于该组合中商品正常价之总和。
在输出文件OUTPUT.TXT中写 一个数字(占一行), 该数字表示顾客所购商品(输入文件指明所购商品)应付的最低货款。
INPUT        OFFER.TXT                OUTPUT.TXT
-------------------------------------------------------------------
2               2                              14
7 3 2         1 7 3 5
8 2 5         2 7 1 8 2 10

解析:

一类很好的分多元数组的题,不太容易想到,故记之。

状态a[i1][i2][i3][i4][i5]表示买第一种i1个,bla,bla。。。的时候最优惠的票子多少。此题数据范围较小,所以可以这样列式。我记得之前有一道传纸条的题,四个方向,也是这样的解法。

 

原文地址:https://www.cnblogs.com/fisch/p/5658414.html