#P1601. Pizza Anyone?
Pizza Anyone?
P1601. 有人要披萨吗?
题目描述
你负责为自己和朋友订购一个大披萨。每个朋友都告诉你他们想要和不想要的配料,但由于只能点一个披萨,没人能保证所有要求都被满足。你能订购一个至少满足每个朋友至少一个要求的披萨吗?
披萨店提供以下配料(每个配料可选择包含或不包含):
输入代码 | 配料 |
---|---|
A | 凤尾鱼 |
B | 黑橄榄 |
C | 加拿大培根 |
D | 蒜末 |
E | 额外芝士 |
F | 新鲜西兰花 |
G | 青椒 |
H | 火腿 |
I | 意式香肠 |
J | 墨西哥辣椒 |
K | 波兰香肠 |
L | 瘦牛肉末 |
M | 蘑菇 |
N | 脱脂羊奶酪 |
O | 洋葱 |
P | 意大利辣香肠 |
朋友的偏好由一行文本描述。例如:
+O-H+P;
表示该朋友接受包含洋葱,或不包含火腿,或包含意大利辣香肠。-E-I-D+A+J;
表示该朋友接受不包含额外芝士、意式香肠、蒜末,或包含凤尾鱼、墨西哥辣椒。
输入格式
输入由一系列披萨约束条件组成。每组约束条件包含1到12个配料约束列表,每个列表占一行,以单独一行的.
结束。
配料约束列表由若干配料请求组成,以分号;
结尾。
配料请求由符号(+
表示包含,-
表示不包含)和大写字母(A-P)组成。
输出格式
对每组约束条件,输出满足条件的披萨配料描述:
- 若存在解,输出
Toppings:
后跟按字母序排列的配料代码(如ACFO
)。 - 若无解,输出
No pizza can satisfy these requests.
。
每组输出独占一行。
输入示例 1
+A+B+C+D-E-F-G-H;
-A-B+C+D-E-F+G+H;
-A+B-C+D-E+F-G+H;
.
+A+B+C+D;
+E+F+F+H;
+A+B-G;
+O+J-F;
+H+I+C;
+P;
+O+M+L;
+M-L+P;
.
+A+B+C+D;
+E+F+F+H;
+A+B-G;
+P-O;
+O+J-F;
+H+I+C;
+P;
+O;
+O+M+L;
-O-P;
+M-L+P;
.
输出示例 1
Toppings:
Toppings: CELP
No pizza can satisfy these requests.
来源
South Central USA 1997