参考文章我们在使用java写算法题时,常常会因为超时而苦恼,明明是和C++一样的思路,甚至代码实现都极为相似,但是却比它慢上一大截,这时候不妨试试IO流读入输出数据,提升速度。
Java写算法题中那些影响你效率的细节(关于暴力破解算法题的细节处理)
Java在算法竞赛中的一些技巧
Java算法竞赛常用模板
package 算法竞赛; import java.io.*; public class Interface1{ static BufferedReader ins = new BufferedReader(new InputStreamReader(System.in)); // ins 用于读入字符串这样的数据 static StreamTokenizer in = new StreamTokenizer(ins); // in 用于读入int、long、double等基本数据类型 static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out)); // out 用于输出,代替以前的System.out.println(); public static void main(String[] args) throws IOException { int a = 0; // 不要忘记在main函数上抛异常 int b = 0; in.nextToken(); // 读入数据时,记得每一次读取,都要先in.nextToken() a = (int)in.nval; // 因为in.nval接收的是double类型,所以要强制类型转换 in.nextToken(); b = (int)in.nval; out.println("a + b = "+(a+b)); String s = ins.readLine(); out.println(s); String s1 = ins.readLine(); out.println(s1); out.println("hello world!"); out.close(); // out.close()一定不能忘!否则不输出数据 } }测试
大家可以找个刷题网站测试,这里以洛谷为例:P1001 A+B Problem
用平常的Scanner读入,和用我这套模板读入来测试二者时间相差多少。
这里给出我的测试代码
import java.io.*; public class Main{ static BufferedReader ins = new BufferedReader(new InputStreamReader(System.in)); static StreamTokenizer in = new StreamTokenizer(ins); static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out)); public static void main(String[] args) throws IOException { in.nextToken(); int a = (int)in.nval; in.nextToken(); int b = (int)in.nval; out.print(a+b); out.close(); } }
用时:207ms
如有谬误,请务必告知,以免误导他人
如果各位看官觉得写得不错,对你有帮助,能不能给个赞啊,这是对我最大的鼓励!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)