【PAT甲级 sc.nextInt()的使用】1008 Elevator (20 分) Java版 9/9通过
题目
这题已经给了电梯到达每一层的顺序,不需要自己调度电梯。
是个水题。
坑 & 心得
- 测试用例1
51 88 35 28 15 62 61 78 89 36 58 95 95 28 94 33 43 44 13 26 0 67 30 80 19 5 4 17 21 7 2 64 82 62 22 24 92 16 49 65 7 62 93 33 4 12 28 28 88 90 82 5
答案:8405
- 测试用例2
11 0 0 0 1 1 1 0 7 7 7 2
答案:127
掉的坑
- 题目中给出了楼层的总数,我思路是:先把整个字符串读进来,然后用空格分割,这样就不需要题目中给的总数了,把总数的位置替换成0,因为一开始是从0层开始运动的。
- 思路没问题,但是实现“替换”的时候,只把第一个数字替换成了0,结果就是,如果第一个数字是22的话,整个数被替换成02,并不是我想要的0
- 一开始没发现这个错误,因为我自己生成的随机数测试用例都是50,100之类的,就算只把第一个数字替换成了0,整体也是00,000之类的,是我想要的0,找不到问题所在。7个测试点中有2个过不去。
- 后来把过程输出了一下,发现第一个数不太对,终于找到了错误。如下图。
其他解法
如果使用sc.nextInt()
,这题有更方便的解法。关于sc.nextInt()
的用法,参考别人的解题代码:
import java.util.Scanner;public class PAT1008 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int a, b = 0, c = 5 * n;for (int i = 0; i < n; i++) {a = b;b = sc.nextInt();if (b < a) {c += 4 * (a - b);} else {c += 6 * (b - a);}}System.out.print(c);}
}
我的代码
import java.util.Scanner;public class Main {/** up:6 down:4 stay:5*/public static void main(String[] args) {Scanner sc = new Scanner(System.in);StringBuilder s = new StringBuilder(sc.nextLine());s.replace(0, s.indexOf(" "), "0");// change 0 to first floor, not need total numString[] strnum = s.toString().split(" ");//System.out.println(s);int sum = 0;for (int i = 0; i < strnum.length - 1; i++) {//System.out.println(time(Integer.parseInt(strnum[i]), Integer.parseInt(strnum[i + 1])));sum += time(Integer.parseInt(strnum[i]), Integer.parseInt(strnum[i + 1]));}System.out.println(sum);}public static int time(int from, int to) {int sum = 5;if (from < to) {// upsum += 6 * (to - from);} else if (from > to) {// downsum += 4 * (from - to);}else if(from==to) {sum=5;}return sum;}
}
结果
【PAT甲级 sc.nextInt()的使用】1008 Elevator (20 分) Java版 9/9通过相关推荐
- 【PAT甲级 替换指定字符】1035 Password (20 分) Java版 4/4通过
题目 这个题挺简单,意思就是把所有的1替换成@,0替换成%等等 读题要仔细,输出格式方面有几个小坑: 末尾不要有多余的空格.换行 如果替换了,要在第一行输出替换的条数 如果没替换,要把题目给的字符串拼 ...
- 【PAT甲级 BigInteger】1019 General Palindromic Number (20 分) Java版 7/7通过
题目 一开始只使用了Long,有后面四个测试点过不去,后来换了BigInteger,就通过了. 这题用Java的BigInteger做,可以操作任意长度的数字,感觉有一点取巧了. 如果C或者C++的话 ...
- 【PAT甲级 火星数字】1100 Mars Numbers (20 分)Java 全部AC
题目 提交Java的时候,千万不要写第一行的包名称!!被这个bug折腾了一个小时.. 题解1:Java import java.util.ArrayList; import java.util.Lis ...
- 【PAT甲级 环最短距离】1046 Shortest Distance (20 分) Java、C++
题目 这题是给你一个环,让你计算两点之间最短距离. 环的任意两点就两条路,只要算出环长和任意一条路的大小,另一条就出来了 时间复杂度O(N) 提前计算前缀长度和即可 题解 C++ 全部测试点通过 #i ...
- 1008 Elevator (20 分)_13行代码AC
立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 The highest building in our city has only one elevator. A request ...
- 【PAT甲级 十进制转十三进制】1027 Colors in Mars (20 分) Java版 5/5通过
题目 是个水题,一次通过. 这道题的大意就是:给你输入3个十进制的数,让你转换成3个十三进制数.在转换的时候,注意不足两位的要用0补全两位. 小坑 提交之前,想起来自查一下我的convert(int ...
- 【PAT甲级 进制转换】1019 General Palindromic Number (20 分) Java版 7/7通过
题目 这道题可以说是非常友善了,说白了是个水题.题目没什么坑,一次通过,主要思想就是: 输入两个数:num和base 将num按照base进制转换,得到arr 判断arr是否是一个回文数,并且输出这个 ...
- 【PAT甲级 素数判断 进制转换】1015 Reversible Primes (20 分) Java版 4/4通过
题目 思路: 为了提高效率,判断素数采用打表的方式 先计算100000以内的所有素数,然后如果要判断一个数是否为素数的话,直接与表中比对 题目中的意思是: 首先,判断一个数N1是否为素数 如果N1是素 ...
- 【PAT (Advanced Level) Practice】1008 Elevator (20 分)
#include<iostream> #include<cstdio> #include<cstdlib> #include<string> #incl ...
最新文章
- 超酷炫!Facebook用深度学习和弱监督学习绘制全球精准道路图
- 探讨微软团队开发利器VSTS之安装及部署篇
- GitHub换帅!开源大神辞任CEO,竞品GitLab刚完成IPO
- 怎样格式化电脑_160G移动硬盘做PE启动盘 要怎样做
- 神经网络为什么要归一化
- 是否所有二分类神经网络的准确率都能无限趋近100%?
- 生成对抗网络简介(包含TensorFlow代码示例)【翻译】
- WSDM 2022 | 合约广告自适应统一分配框架
- 局部描述符表LDT的作用+定义+初始化+跳转相关
- Android Fragment功能的例子
- 物联网专题--基于APP Inventor的BLE蓝牙4.0数据通信
- Fiddler web 调试工具
- 如何安装固态硬盘和重装系统???
- 网页右下角弹出的图片无法显示
- Flutter面试问题总结
- 教你添加百度分享按钮
- @Autowired和@Resource的区别
- 英文文献翻译成中文,推荐哪个软件?
- Java利用Set集合去重复
- linux 游戏 复刻,魔法门复刻手游官网版-魔法门复刻下载v4.00.9-Linux公社
热门文章
- c# websocket 心跳重连_websocket的简单使用
- 特殊方法求1~n的和
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之三 - 事件机制
- win32中如何使用CString
- STL中list用法详解
- 网络优化实践探索文章
- 使用VMware VSphere WebService SDK进行开发 (六)——检测告警信息
- 写了 30 多个 Go 常用文件操作的示例,收藏这一篇就够了
- 提问征集:对话VLC首席开发者Jean-Baptiste Kempf
- Twitch 沈悦时:国内外互联网直播生态差异