找零钱 Java 暴力破解

问题描述:
有n个人正在饭堂排队买海北鸡饭。每份海北鸡饭要25元。奇怪的是,每个人手里只有一张钞票(每张钞票的面值为25、50、100元),而且饭堂阿姨一开始没有任何零钱。请问饭堂阿姨能否给所有人找零(假设饭堂阿姨足够聪明)

输入格式:
  第一行一个整数n,表示排队的人数。

接下来n个整数a[1],a[2],…,a[n]。a[i]表示第i位学生手里钞票的价值(i越小,在队伍里越靠前)
  
输出格式:
  输出YES或者NO

import java.util.Scanner;

public class 找零钱
{

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// 有n个人正在饭堂排队买海北鸡饭。每份海北鸡饭要25元。奇怪的是,
		// 每个人手里只有一张钞票(每张钞票的面值为25、50、100元),
		// 而且饭堂阿姨一开始没有任何零钱。请问饭堂阿姨能否给所有人找零(假设饭堂阿姨足够聪明)
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] mony = new int[n];
		// int sum = n * 25;// 总收入
		int x = 0;// 计算25元多少张
		int y = 0;// 计算50元多少张
		int z = 0;// 计算100元多少张
		for (int i = 0; i < mony.length; i++)
		{
			mony[i] = sc.nextInt();
		}
		// 循环计算每张面值为多少
		for (int i = 0; i < mony.length; i++)
		{
			if (mony[i] == 25)
			{
				x++;
			} else if (mony[i] == 50)
			{
				y++;
			} else
			{
				z++;
			}
		}
		// 计算每个面值的总额
		int num1 = 25 * x;
		int num2 = 50 * y;
		int num3 = 100 * z;
		// 当有100的时候
		if (z != 0)
		{
			// 看100的能不能被找开
			if (num3 - num1 - num2 <= 25||z+y<x)
			{
				System.out.println("YES");
			} else
			{
				System.out.println("NO");
			}
			//当没有100的时候,看50的能不能被找开
		} else if (y != 0)
		{
			if (num2 - num1 <= 25)
			{
				System.out.println("YES");
			} else
			{
				System.out.println("NO");
			}
			//只有25面值,不用找了
		}else {
			System.out.println("YES");
		}
	}

}

样例输入

4
25 25 50 50

样例输出:

YES

样例输入:

2
25 100

样例输出:

NO
发布了8 篇原创文章 · 获赞 6 · 访问量 172

猜你喜欢

转载自blog.csdn.net/Hackergu/article/details/105091393
今日推荐