本文主要是介绍动物园的栅栏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【问题描述】
小芳和她的朋友们沿着高度为 h 的动物园栅栏一起行走,他们不想惊扰到动物们,因此他们每个人的高度都不能超过 h ,如果他们中有人身高超过 h ,则他必须弯下腰来行走。
如果将正常行走的人的宽度视为1的话,那么当他弯下腰的时候宽度会变为2。小芳的朋友们想一边走一边聊天,他们希望尽量走成一排,但是道路宽度是有限的,因此可能要分成几排来行走。
给出朋友们的人数 n(包括小芳)、栅栏的高度 h 以及道路的宽度 w ,以及所有 n 个朋友的身高,请输出最少能走成几排?
【输入形式】
输出的第一行为三个整数 n、h、w,接下来的一行 n 个整数,分别表示 n 个人的身高。
【输出形式】
输出为一个整数,表示朋友们可以行走的最小排数。
【样例输入】
2 2 3
1 3
【样例输出】
1
Java代码
import java.util.Scanner;public class C4 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt(); // 朋友的人数int h = scanner.nextInt(); // 栅栏的高度int w = scanner.nextInt(); // 道路的宽度int totalWidth = 0; // 总宽度需求int flag = 0; //用于标记朋友的身高是否全为2for (int i = 0; i < n; i++) {int height = scanner.nextInt(); // 朋友的身高if (height <= h){flag = 1;}totalWidth += (height <= h) ? 1 : 2; // 正常行走宽度为1,弯下腰行走宽度为2}// 计算最少排数int minRows = totalWidth / w;// 如果有余数,则需要再加一排if (totalWidth % w != 0) {minRows += 1;}if (flag == 0){ //特殊情况:即所有人的height都大于栏栅h,每一排就只能站一个人minRows = n;}System.out.println(minRows);}
}
这篇关于动物园的栅栏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!