洛谷p1567题的java写法(附StreamTokenizer类的介绍)

洛谷P1567题在使用常规方法解决时遇到效率问题,文章介绍了如何利用Java的StreamTokenizer类提高输入效率,详细讲解了StreamTokenizer的ttype字段、构造方法和常用方法,并提供了大佬的解决方案。
摘要由CSDN通过智能技术生成

话不多说直接上题目:
在这里插入图片描述
乍一看这道题似乎很简单,对啊,不就是判断相邻数字之间的大小关系嘛,然后楼主开始写代码,提交,一气呵成,但是测评结果出来后傻眼了…
在这里插入图片描述
唔,emmm,先把代码给大家看看(本人新手,捂脸.jpg)

import java.util.*;
public class Main {
   
    public static void main(String[] args) {
   
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int sum = 1,test = 1;
        int []b = new int[a];
        for(int i=0;i<a;i++) {
   
            b[i] = sc.nextInt();
        }
        for(int i=0;i<a-1;i++) {
   
            if(b[i]<b[i+1]) {
   
                test++;
            } else {
   
                if(test>sum) {
   
                    sum = test;
                }
                test = 1;
            }
        }
        System.out.println(sum);
    }
}

(很中规中矩的代码,完全符合小白的思想,但就是不过)

经过询问大佬,才知道,应该用流!!!

流有一个很常见的用法。用于基本的输入操作!(比如:ACM编程中,输入效率比较高。)
BufferedReader provides quite fast read operations for almost all problems. But this class may be used to read single characters and lines only. To read tokens and numbers you should use StringTokenizer orStreamTokenizer.
在这里插入图片描述
直接上代码,大家自行体会

import java.io.*;
public class Main {
   
    public static void main(String[] args) throws IOException {
   
        int []a;
        StreamTokenizer sc = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
        sc.nextToken
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值