问题描述 涛涛立志要做新好青年,他最近在学做菜。由于技术还很生疏,他只会用鸡蛋,西红柿,鸡丁,辣酱这四种原料来做菜,我们给这四种原料标上字母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
解题思路:
根据不同菜的配方,修改原料数量,直到做完菜
AC代码:
1 #include <stdio.h> 2 3 int main(void) 4 { 5 int i,j; 6 int a,b,c,d; /*不同原料的数量*/ 7 scanf("%d %d %d %d",&a,&b,&c,&d); 8 for (i = 1 ; i <= 5 ; i ++) 9 { 10 j = 0; /*菜的数目*/ 11 switch(i) /*不同菜的配方*/ 12 { 13 case 1: 14 while (a-2>= 0 && b-1>=0 && d-2>= 0) 15 { 16 a -= 2,b --,d -= 2; 17 j ++; 18 } 19 break; 20 case 2: 21 while (a-1>= 0 && b-1>=0 && c-1>=0 && d-1>= 0) 22 { 23 a --,b --,c --,d --; 24 j ++; 25 } 26 break; 27 case 3: 28 while (c-2>=0 && d-1>= 0) 29 { 30 c -= 2,d --; 31 j ++; 32 } 33 break; 34 case 4: 35 while (b-3 >= 0) 36 { 37 b -= 3; 38 j ++; 39 } 40 break; 41 case 5: 42 while (a-1>= 0 && d-1>= 0) 43 { 44 a --,d --; 45 j ++; 46 } 47 break; 48 default: 49 break; 50 } 51 printf("%d\n",j); 52 } 53 54 return 0; 55 }