【算法】环形赛道-java
一、问题
环形赛道上设有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相关推荐
- 数组实现环形队列——Java随解
数组实现环形队列--Java随解 解题前言 代码语言 代码实现 运行示例 总结归纳 解题前言 环形队列是在普通队列的基础上进行修改的,目的提高队列的复用性.本次环形队列利用了数组进行模拟. 代码语言 ...
- java和c 的rsa加密算法_RSA算法签名技术Java与C++统一(加密解密结果一样)
RSA算法签名技术Java与C++统一 (加密解密结果一样) 源代码下载地址:http://www.doczj.com/doc/64f44a94a0116c175f0e484d.html/produc ...
- 基数排序算法(基于Java实现)
title: 基数排序算法(基于Java实现) tags: 基数算法 基数排序算法原理及代码实现: 一.基数排序算法的原理 基数排序属于"分配式排序",又称"桶子法&qu ...
- 选择排序算法(基于Java实现)
title: 选择排序算法(基于Java实现) tags: 选择算法 选择排序算法原理及代码实现: 一.选择排序算法的原理 选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间.但是选择 ...
- 插入排序算法(基于Java实现)
title: 插入排序算法(基于Java实现) tags: 插入算法 插入排序算法原理及代码实现: 一.插入排序算法的原理 首先,我们将数组中的数据分为两个区间,已排序区间和未排序区间.初始已排序区间 ...
- 桶排序算法(基于Java实现)
title: 桶排序算法(基于Java实现) tags: 桶排序算法 桶排序算法的原理和代码实现 一.桶排序算法的原理 桶排序,顾名思义,会用到"桶",核心思想是将要排序的数据分到 ...
- 快速排序算法(基于Java实现)
title: 快速排序算法(基于Java实现) tags: 快速排序算法 快速排序算法的原理与代码实现: 一.快速排序算法的原理 快排算法的思想是: 如果需要排序数组中下标从p到r之间的一组数据,我们 ...
- 《LeetCode力扣练习》第141题 环形链表 Java
<LeetCode力扣练习>第141题 环形链表 Java 一.资源 题目: 给你一个链表的头节点 head ,判断链表中是否有环. 如果链表中有某个节点,可以通过连续跟踪 next 指针 ...
- java回文数算法for_【Java】【每日算法/刷穿 LeetCode】9. 回文数(简单)
首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]9. 回文数(简单) 宫水三叶发布于 今天 15:30 题目描述 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从 ...
最新文章
- 《数字图像处理》 笔记
- 使用JDBC处理MySQL大数据
- Vue导入非模块化的第三方插件功能无效解决方案
- Android学习–Android app 语言切换功能
- iOS-文件断点续传
- Observer(观察者)模式
- Spring注解几大注解的区别
- 比特币 转账交易为什么要等6个区块确认才算到账 安全 以太坊12个区块
- 第三次PR培训(添加常用效果和转场)
- 信号与线性系统分析(吴大正,郭宝龙)(5-系统定义与典型系统)
- matlab中怎么看电压和电流值,matlab计算电压有效值
- 做一个文字跟随鼠标java_JavaScript实现文字跟随鼠标特效
- JAVA家教管理系统毕业设计 开题报告
- 你不是不优秀,而是太着急
- Ganymed SSH-2 for Java系列11之SCPClient
- Google Earth Engine(GEE)——Landsat ETM+ to OLI 协调
- 钱宝网可靠吗? 不信可以先试用后在说
- net.sf.json.exception:Unquotted String错误,解决办法。
- 新人入职培训流程及转正交流过程指导原则
- 中职计算机基础应用知识,总发中职《计算机应用基础:基础模块》第一单元 计算机基础知识.pptx...
热门文章
- 海尔旗下有屋智能IPO被终止:年应收账款10亿 受恒大拖累
- BUAA 439 孟竹屌丝玩儿游戏
- FAL[client]: Failed to request gap sequence
- Robust Visual Tracking with a Freely-moving Event Camera
- 【pytorch模型实现9】HAN_Attention
- SpringCloud Gateway 构建全局缓存 Request 解决 body 不可重复读问题
- usb插入检测系统、支持实时日志记录、邮箱报警
- 转载:千万别看`小心让你哭
- 将url网址转换成对象
- 【源码】数学研究者的Cleve_s实验室