UVa 507 Jill Rides Again

本文提供了一个针对UVa507 Jill Rides Again编程题目的解决方案,使用Java实现,通过动态规划找到每条路线中最美的部分,并输出其起点和终点站。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
 * UVa 507 Jill Rides Again
 * */
import java.util.Scanner;

class Main {
	static final int MAX = 20005;

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int b = scanner.nextInt();
		int[] arr = new int[MAX];
		for (int i = 1; i <= b; i++) {
			int s = scanner.nextInt();
			for (int j = 1; j < s; j++) {
				arr[j] = scanner.nextInt();
			}
			int min = 0;
			int best = Integer.MIN_VALUE;
			int[] sum = new int[s];
			sum[0] = 0;
			int oldStart = 1, oldEnd = 1;
			int start = 1;
			for (int j = 1; j < s; j++) {// sum[j]记录从arr[1]...arr[j]的和
				sum[j] = sum[j - 1] + arr[j];
				if (sum[j] - min > best) {
					best = sum[j] - min;// 更新best的值
					oldEnd = j + 1;
					oldStart = start;
				} else if (sum[j] - min == best
						&& (j - start + 1) > (oldEnd - oldStart)) {// best相等且当前最优长度比原来大
					// 更新oldStart和 oldEnd
					oldStart = start;
					oldEnd = j + 1;
				}
				if (sum[j] < min) {
					min = sum[j];// 更新min的值
					start = j + 1; // 更新start
				}
			}
			if (best > 0) {
				System.out.println("The nicest part of route " + i
						+ " is between stops " + oldStart + " and " + oldEnd);
			} else {
				System.out.println("Route " + i + " has no nice parts");
			}
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值