一、问题

环形赛道上设有n个补给站,补给站标记为a1、a2、…、an。站点间距离用di表示,d1表示第1个站点到最后一个站点之间的距离,d2表示第2个站点到第1个站点之间的距离。编写一个程序(动态规划方法)求任意两个站点间的最短距离。

二、要求

输入格式:
第一行输入一个整数n表示站点个数,第二行输入d1、d2、…、dn。第三行输入站点编号x和y。(如a1站点编号为1)

输出格式:
输出站点x和y之间的最短距离。

输入样例:
在这里给出一组输入。例如:
5
1 2 3 15 4
1 5

输出样例:
在这里给出相应的输出。例如:
1

三、代码

import java.util.ArrayList;
import java.util.Scanner;public class Main{static int getLength(ArrayList<Integer>arrayList,int n,int x,int y){int total=0;int t=0;int dp[][]=new int[n][n];for (int i = 0; i < arrayList.size(); i++) {total=total+arrayList.get(i);//计算总距离}for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {if(i==j){dp[i][j]=0;//矩阵对角线为0}else{t=0;for (int k = i; k <j; k++) {t=t+arrayList.get(k); //计算x<y时 x->y顺时针距离}if(t<=total-t){//如果t>total-t则当前顺时针不是最优解 逆时针才是 用总距离-顺时针距离=逆时针dp[i][j]=t;}else {dp[i][j]=total-t;}}}}if (x>y){ //x->y 与 y->x 的最优距离是一样的int temp=x;x=y;y=temp;}return dp[x-1][y-1];}public static void main(String[] args) {ArrayList<Integer> arr=new ArrayList<>();Scanner scanner=new Scanner(System.in);String ss=scanner.nextLine();int n=Integer.valueOf(ss);ss=scanner.nextLine();String temp[]=ss.split(" ");for (int i = 1; i < temp.length; i++) {arr.add(Integer.valueOf(temp[i]));}arr.add(Integer.valueOf(temp[0]));// 这里我代码思路第一个元素是2 而实际输入案例里1才是第一个ss=scanner.nextLine();String xy[]=ss.split(" ");int x=Integer.valueOf(xy[0]);int y=Integer.valueOf(xy[1]);int a=getLength(arr,n,x,y);System.out.print(a);}
}

【算法】环形赛道-java相关推荐

  1. 数组实现环形队列——Java随解

    数组实现环形队列--Java随解 解题前言 代码语言 代码实现 运行示例 总结归纳 解题前言 环形队列是在普通队列的基础上进行修改的,目的提高队列的复用性.本次环形队列利用了数组进行模拟. 代码语言 ...

  2. java和c 的rsa加密算法_RSA算法签名技术Java与C++统一(加密解密结果一样)

    RSA算法签名技术Java与C++统一 (加密解密结果一样) 源代码下载地址:http://www.doczj.com/doc/64f44a94a0116c175f0e484d.html/produc ...

  3. 基数排序算法(基于Java实现)

    title: 基数排序算法(基于Java实现) tags: 基数算法 基数排序算法原理及代码实现: 一.基数排序算法的原理 基数排序属于"分配式排序",又称"桶子法&qu ...

  4. 选择排序算法(基于Java实现)

    title: 选择排序算法(基于Java实现) tags: 选择算法 选择排序算法原理及代码实现: 一.选择排序算法的原理 选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间.但是选择 ...

  5. 插入排序算法(基于Java实现)

    title: 插入排序算法(基于Java实现) tags: 插入算法 插入排序算法原理及代码实现: 一.插入排序算法的原理 首先,我们将数组中的数据分为两个区间,已排序区间和未排序区间.初始已排序区间 ...

  6. 桶排序算法(基于Java实现)

    title: 桶排序算法(基于Java实现) tags: 桶排序算法 桶排序算法的原理和代码实现 一.桶排序算法的原理 桶排序,顾名思义,会用到"桶",核心思想是将要排序的数据分到 ...

  7. 快速排序算法(基于Java实现)

    title: 快速排序算法(基于Java实现) tags: 快速排序算法 快速排序算法的原理与代码实现: 一.快速排序算法的原理 快排算法的思想是: 如果需要排序数组中下标从p到r之间的一组数据,我们 ...

  8. 《LeetCode力扣练习》第141题 环形链表 Java

    <LeetCode力扣练习>第141题 环形链表 Java 一.资源 题目: 给你一个链表的头节点 head ,判断链表中是否有环. 如果链表中有某个节点,可以通过连续跟踪 next 指针 ...

  9. java回文数算法for_【Java】【每日算法/刷穿 LeetCode】9. 回文数(简单)

    首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]9. 回文数(简单) 宫水三叶发布于 今天 15:30 题目描述 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从 ...

最新文章

  1. 《数字图像处理》 笔记
  2. 使用JDBC处理MySQL大数据
  3. Vue导入非模块化的第三方插件功能无效解决方案
  4. Android学习–Android app 语言切换功能
  5. iOS-文件断点续传
  6. Observer(观察者)模式
  7. Spring注解几大注解的区别
  8. 比特币 转账交易为什么要等6个区块确认才算到账 安全 以太坊12个区块
  9. 第三次PR培训(添加常用效果和转场)
  10. 信号与线性系统分析(吴大正,郭宝龙)(5-系统定义与典型系统)
  11. matlab中怎么看电压和电流值,matlab计算电压有效值
  12. 做一个文字跟随鼠标java_JavaScript实现文字跟随鼠标特效
  13. JAVA家教管理系统毕业设计 开题报告
  14. 你不是不优秀,而是太着急
  15. Ganymed SSH-2 for Java系列11之SCPClient
  16. Google Earth Engine(GEE)——Landsat ETM+ to OLI 协调
  17. 钱宝网可靠吗? 不信可以先试用后在说
  18. net.sf.json.exception:Unquotted String错误,解决办法。
  19. 新人入职培训流程及转正交流过程指导原则
  20. 中职计算机基础应用知识,总发中职《计算机应用基础:基础模块》第一单元 计算机基础知识.pptx...

热门文章

  1. 海尔旗下有屋智能IPO被终止:年应收账款10亿 受恒大拖累
  2. BUAA 439 孟竹屌丝玩儿游戏
  3. FAL[client]: Failed to request gap sequence
  4. Robust Visual Tracking with a Freely-moving Event Camera
  5. 【pytorch模型实现9】HAN_Attention
  6. SpringCloud Gateway 构建全局缓存 Request 解决 body 不可重复读问题
  7. usb插入检测系统、支持实时日志记录、邮箱报警
  8. 转载:千万别看`小心让你哭
  9. 将url网址转换成对象
  10. 【源码】数学研究者的Cleve_s实验室