您的位置:首页 > 编程语言 > C语言/C++

蓝桥杯 - 算法训练 学做菜 C语言实现

2017-02-28 16:29 344 查看
算法训练 学做菜
问题描述

  涛涛立志要做新好青年,他最近在学做菜。由于技术还很生疏,他只会用鸡蛋,西红柿,鸡丁,辣酱这四种原料来做菜,我们给这四种原料标上字母A,B,C,D。

  涛涛现在会做的菜有五种:

  1、 西红柿炒鸡蛋 原料:AABDD

  2、 酸辣鸡丁 原料:ABCD

  3、 宫保鸡丁 原料:CCD

  4、 水煮西红柿 原料:BBB

  5、 怪味蛋 原料:AD

  这天早上,开开去早市给涛涛买了一些原料回来。由于事先没有什么计划,涛涛决定,对于现存的原料,每次尽量做菜单上靠前(即编号小)的菜。

  现在请你写一个程序,判断一下开开和涛涛中午能吃到哪些菜。

输入格式

  共4个整数a,b,c,d。分别表示开开买的A,B,C,D这4种原料的数量。每种原料不会超过30份。

输出格式

  输出5行。其中第i行表示涛涛做的第i种菜的数目。

样例输入

3

1

2

4

样例输出

1

0

1

0

1

分析:
这题没什么难的,主要是题目有点问题。题目并没说要一道菜可以做多次,而且说是自己次,小编一开始以为只做一次,之后一直错,直到看了答案才知道涛涛和天天是个大胃王。

代码在此:
#include<stdio.h>

int main () {

int a,b,c,d;

scanf("%d%d%d%d", &a, &b, &c, &d);

int s = 0;
switch(1){
case 1:
while(1){
if(a >= 2 && b >= 1 && d >= 2){
a -= 2;
b -= 1;
d -= 2;
s ++;
} else {
printf("%d\n",s);
s = 0;
break;
}
}
case 2:
while(1){
if(a >= 1 && b >= 1 && c >=1 && d >= 1){
a -= 1;
b -= 1;
c -= 1;
d -= 1;
s ++;
} else {
printf("%d\n",s);
s = 0;
break;
}
}
case 3:
while(1){
if(c >= 2 && d >= 1){
c -= 2;
d -= 1;
s ++;
} else {
printf("%d\n",s);
s = 0;
break;
}
}
case 4:
while(1){
if(b >= 3){
b -= 3;
s ++;
} else {
printf("%d\n",s);
s = 0;
break;
}
}
case 5:
while(1){
if(a >= 1 && d >= 1){
a -= 1;
d -= 1;
s ++;
} else {
printf("%d\n",s);
s = 0;
break;
}
}
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: