杭电1260java实现
【摘要】 题目链接 这题的核心状态转移方程是:dp[j]=min(dp[j-1] dan[j],dp[j-2] shuang[j-1]);dan[i]表示第i个人的单票,shuang[i]代表i-1和i两个人的钱,到第i个人就是要判断他是单人 前i-1人最少合最少还是他和前一个人双人票 前i-2个人最少合最少。 附上代码如下:
import java.util.Scanner;...
题目链接
这题的核心状态转移方程是:dp[j]=min(dp[j-1] dan[j],dp[j-2] shuang[j-1]);dan[i]表示第i个人的单票,shuang[i]代表i-1和i两个人的钱,到第i个人就是要判断他是单人 前i-1人最少合最少还是他和前一个人双人票 前i-2个人最少合最少。
附上代码如下:
import java.util.Scanner;
public class 杭电1260 {
public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt();//n个不同的场景 int value[]=new int[n];//储存结果 for(int i=0;i<n;i ) { int k=sc.nextInt();//总人数 int dp[]=new int[k 1]; int dan[]=new int[k 1];//单人所需要的时间 for(int j=1;j<k 1;j ) { dan[j]=sc.nextInt(); } if(k==1) {value[i]=dan[1];} else //双人票时间 { int shuang[]=new int[k]; for(int j=1;j<k;j ) { shuang[j]=sc.nextInt(); } dp[1]=dan[1]; for(int j=2;j<k 1;j ) { dp[j]=min(dp[j-1] dan[j],dp[j-2] shuang[j-1]); } value[i]=dp[k]; } int hour=value[i]/3600; int min=value[i]600/60; int second=value[i]`; //统一格式 String timeStr = unitFormat(hour 8) ":" unitFormat(min) ":" unitFormat(second); if((hour 8)/12%2==0)//判断上下午 {System.out.println(timeStr " am");} else {System.out.println(timeStr " pm");} } }
private static String unitFormat(int i) { String retStr = null; if (i >= 0 && i < 10) retStr = "0" Integer.toString(i); else retStr = "" i; return retStr;
}
private static int min(int i, int j) { return i<j?i:j;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
文章来源: bigsai.blog.csdn.net,作者:Big sai,版权归原作者所有,如需转载,请联系作者。
原文链接:bigsai.blog.csdn.net/article/details/79632444
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)