admin 管理员组

文章数量: 1087652

蓝桥杯 试题 算法训练 学做菜 Java

##蓝桥杯 试题 算法训练 学做菜 Java
问题描述
涛涛立志要做新好青年,他最近在学做菜。由于技术还很生疏,他只会用鸡蛋,西红柿,鸡丁,辣酱这四种原料来做菜,我们给这四种原料标上字母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

import java.util.Scanner;public class 学做菜 {static int result[] = new int[5];//存储结果public static void main(String[] args) {Scanner sc = new Scanner(System.in);int food[][] = {{2,1,0,2},{1,1,1,1},{0,0,2,1},{0,3,0,0},{1,0,0,1}};//创建菜品信息int arr[] = new int[4];//原材料的数量for (int i = 0; i < arr.length; i++) {arr[i] = sc.nextInt();}for (int i = 0; i < food.length; i++) {//循环每一种菜品int min=100;for (int j = 0; j < food[i].length; j++) {//找出当前菜品最多能做多少组int n=arr[j];if (food[i][j]!=0) {n=arr[j]/food[i][j];if (min>n) {min=n;} }}System.out.println(min);if (min>0) {result[i]+=min;//多余的,用来存储结果for (int j = 0; j < arr.length; j++) {//从原材料的数量中依次减去当前菜品所需的材料*min值(即为当前剩余材料可以做多少道菜)arr[j]-=food[i][j]*min;}}}}//	static boolean resivefood(int arr[]) {//这种做法超时
//		if (arr[0] >= 2 && arr[1] >= 1 && arr[3] >= 2) {
//			arr[0] -= 2;
//			arr[1] -= 1;
//			arr[3] -= 2;
//			result[0]++;
//			return true;
//		} else if (arr[0] >= 1 && arr[1] >= 1 && arr[2] >= 1 && arr[3] >= 1) {
//			arr[0] -= 1;
//			arr[1] -= 1;
//			arr[3] -= 1;
//			result[1]++;
//			return true;
//		} else if (arr[2] >= 2 && arr[3] >= 1) {
//			arr[2] -= 2;
//			arr[3] -= 1;
//			result[2]++;
//			return true;
//		} else if (arr[1] >= 3) {
//			arr[3] -= 3;
//			result[3]++;
//			return true;
//		} else if (arr[0] >= 1 && arr[3] >= 1) {
//			arr[0] -= 1;
//			arr[3] -= 1;
//			result[4]++;
//			return true;
//		} else
//			return false;
//	}}

本文标签: 蓝桥杯 试题 算法训练 学做菜 Java