for循环总超时,能不能换个方法??

for循环总超时,能不能换个方法??,第1张

恐怕不单是for循环超时问题,数字大了(比如100000)就要出错。for循环超时问题,可以不要在里面做重复计算,像你这里的num/2,可在外面声明一个x=num/2或x=num>>1便能避免。多重循环还要尽量避免“空运转”,它们无功耗时。我简单改了一下算法,你试试是不是快了点?这并不是最好的,还能精简一些。

void main(void){

int num,i,j,k,jx,kx

while(num!=EOF){//输入num

cin>>num

for(i=0i*i<=numi++)//利用for循环一个一个找出答案

for(jx=num-i*i,j=0j*j<=jxj++)

for(kx=jx-j*j,k=0k*k<=kxk++)

if(num==i*i+j*j+k*k &&i<=j&&j<=k)

cout<<i<<" "<<j<<" "<<k<<" "<<endl

}

}

public static long beginTime = System.currentTimeMillis()//开始时间

public static long overTime = 30 * 1000//运行时间

public static void main(String[] args) {

// TODO Auto-generated method stub

for(long i = 0i >= 0i++) {

System.out.println(i)

long nowTime = System.currentTimeMillis()

if((nowTime - beginTime) >overTime) break

}

}

30秒后我的都输出到100多万了。。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8161782.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存