关于StringTokenizer输入方式在PTA报错的问题
今天第一次用PTA,就遇到了令人无比头疼的问题:StringTokenizer输入方式在PTA报错。
做的是mooc浙大数据结构课程的最大子列和作业,试了试暴力求解的方法,代码如下:
public static void main(String[] args) throws IOException {
Scanner reader = new Scanner(System.in);
int N;
N = reader.nextInt();
int[] A = new int[N];
//优化前
for (int i = 0; i < A.length; i++) {
A[i] = reader.nextInt();
}
//StringTokenizer优化
//readIntegers(N,A);
System.out.println(MaxSubseqSum2(N, A));
}
//StringTokenizer优化
/** Read count integers using BufferedReader */
static void readIntegers(int count, int[] A)
throws IOException {
InputStreamReader a = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(a);
StringTokenizer tokenizer = new StringTokenizer("");
int last = 0;
while (count-- > 0) {
if (! tokenizer.hasMoreTokens() ) {
tokenizer = new StringTokenizer(reader.readLine());
}
A[last] = Integer.parseInt(tokenizer.nextToken());
last++;
}
}
static int MaxSubseqSum2(int N, int[] A) {
int MaxSum = 0;
int ThisSum = 0;
for(int i = 0; i < N; i++) {
ThisSum = 0;
for(int j = i; j < N; j++) {
ThisSum += A[j];
if(ThisSum > MaxSum) {
MaxSum = ThisSum;
}
}
}
return MaxSum;
}
在没有优化前,原本的代码在数据较小时都没有出错,PTA的结果是因为测试到个100000随机数时会内存超限,所以我按照zhrb老师的文章《PTA上提交Java程序的一些套路》(https://www.cnblogs.com/zhrb/p/6347738.html#4901102)
第7.7节的内容结合使用了StringTokenizer进行处理输入,详细见上面注释了优化的代码,eclipse上跑没问题,但是PTA报错了,前后两次只有输入的方法不同,却开始报答案错误了······
头疼,在老师博客底下求助了,不知道会不会有回应,后续如果问题解决了会来更新的!
最后贴个图(模糊的话右键新标签打开放大即可)~

浙公网安备 33010602011771号