超时代码:思路易想到,但是数据量太大
package com.demo3;
import java.util.Scanner;
/*
* Given a sequence 1,2,3,......N,
* your job is to calculate all the possible sub-sequences(子序列) that the sum of the sub-sequence is M.
*/
public class HDU_oj2058 {
public static void main(String[] args) {
Scanner sn = new Scanner(System.in);
long n,m,sum,start,end=0;
while(sn.hasNext()) {
n = sn.nextLong();
m = sn.nextLong();
if(n == 0 && m == 0) {
break;
}
for(long i = 1;i <= n;i++) {
sum = 0;
start = i; //首先从i开始
if(start <= m) { //如果刚好遍历到这个值等于m
end = start;
while(sum < m) { //遍历序列
sum += end;
end++;
}
if(sum == m) {
end = end-1;
System.out.println("[" + start + "," + end +"]");
} else {
continue;
}
}
}
System.out.println();
}
sn.close();
}
}
正确代码如下:数据规模太大,需要整数分解,思路见代码注释

这篇博客讨论了在杭电在线评测系统OJ中遇到的2058题目的超时问题。作者指出原始代码由于数据量过大导致运行超时,然后提供了经过优化的正确代码,强调了解决方案的关键在于整数分解。通过代码注释详细解释了优化思路。
最低0.47元/天 解锁文章
1755

被折叠的 条评论
为什么被折叠?



