- 在洛谷中无法通过,感觉是最后一步出了问题,佬们帮我看看,想用二分查找的办法通过
4条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
好的,根据您的需求,这里是一个可能的解决方案:
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[][] height = new int[N][101]; for (int i = 0; i < N; i++) { height[i][0] = sc.nextInt(); } System.out.println("Given heights:"); for (int i = 0; i < N; i++) { System.out.print(height[i][0] + " "); } int X = sc.nextInt(); if (height[0][0] >= X && hasPath(height, 0)) { System.out.println(0); } else if (height[0][0] <= X && !hasPath(height, 0)) { System.out.println(N - 1); } else if (height[0][0] > X && !hasPath(height, 0)) { System.out.println(1); } } private static boolean hasPath(int[][] height, int pos) { int left = pos - 1; int right = pos + 1; while (left >= 0 && right < height.length && height[left][0] == height[right][0]) { left--; right++; } return left >= 0; } }
在这个程序中,我们首先读取用户输入的人数N和每个人的身高。然后,我们将这些信息转换为二维数组
height
,其中每个元素表示当前高度的位置。接下来,我们要求用户输入身高值X。根据高度值判断应该放在哪个位置。如果高度值小于等于X,那么应该在起始位置附近放一个位置;如果高度值大于X,那么应该在当前位置附近放一个位置;如果高度值等于X,那么应该在起始位置附近的任何地方放一个位置。
我们还定义了一个辅助方法
hasPath
,用于检查当前位置是否已经填满了所有的高度。总的来说,这个问题可以通过二分查找的方法解决。但是,在实际应用中,可能会遇到更多的情况和挑战,例如多个同高度的人在同一位置等。在这种情况下,可能需要进行更复杂的逻辑处理。因此,建议您深入研究这个问题,并查阅相关的文献和资料,以了解如何更好地处理这类问题。
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥100 华为手机私有App后台保活
- ¥20 有谁能看看我coe文件到底哪儿有问题吗?
- ¥20 我的这个coe文件到底哪儿出问题了
- ¥15 matlab使用自定义函数时一直报错输入参数过多
- ¥15 设计一个温度闭环控制系统
- ¥100 rtmpose姿态评估
- ¥15 java 通过反射找路径下的类,打包后就找不到
- ¥15 通联支付网上收银统一下单接口
- ¥15 angular有偿编写,
- ¥15 centos7系统下abinit安装时make出错