2014-11-02 90 views
-1

我试过每一个测试和输出是正确的,但我不明白为什么它显示“错误的答案”在我提交后在UVA.Please帮助我找出这个代码的问题。这里是我的代码..为什么我的Uva的3n + 1解决方案是错误的?

import java.util.*; 
class Main 
{ ` 
    int counter=0; 
    public static void main(String [] args) 
    { 
    Scanner sc=new Scanner(System.in); 
    while(sc.hasNextLine()) 
    { 
     String str=sc.nextLine(); 
     StringTokenizer st=new StringTokenizer(str," "); 
     String a=(String)st.nextElement(); 
     String b=(String)st.nextElement(); 
     long i=Long.parseLong(a,10); 
     long j=Long.parseLong(b,10); 
     Main mn=new Main(); 
     long ans; 
     if(i>j) 
     { 
     ans=mn.count(j,i); 
     } 
     else 
     { 
     ans=mn.count(i,j); 
     } 
     System.out.print(i+" "+j+" "+ans); 
     System.out.println(); 
    } 
    } 

    long count(long m,long n) 
    { 
    if(m==1 && n==1) 
    { 
     return 0; 
    } 
    long input=0; 
    long ans=0; 
    for(long i=m;i<=n;i++) 
    { 
     input=i; 
     while (true) 
     { 
     if(input==1) 
     { 
      counter++; 
      break; 
     } 
     if(input%2==0) 
     { 
      input=input/2;       
      counter++; 
     } 
     else 
     { 
      input=input*3+1; 
      counter++; 
     } 
     } 
     if(counter>ans) 
     { 
     ans=counter; 
     } 
     counter=0; 
    } 
    return ans; 
    } 
} 
+1

Stack Overflow是不是一个调试服务。请查找代码中存在问题的部分,并向我们展示与问题相关的部分。 – Hosch250 2014-11-02 21:06:19

回答

0

您的代码在测试用例1 1上失败。

输出应该是1,但你的程序给出0

修复的方法是简单的:

if(m==1 && n==1) 
{ 
    return 1; // instead of 0 
} 
相关问题