2013-11-22 3 views
2

업데이트] 사이의 작업의 가장 많은 수를 찾으려면이 방법 (Collatz 추측)를 사용하여 당신이 할 수있는, 4 말을 어떻게 230
감사 모든 지침.자바 다중 입력

public static void main(String[] args) { 

    System.out.print("Enter a low integer "); 
    Scanner input = new Scanner(System.in); 
    int low = input.nextInt(); 
    System.out.print("Enter a high integer "); 
    int number = input.nextInt(); 
    maxendurance(number); 
} 

public static int maxendurance(int number) { 

    int count = 0; 

    System.out.print("The number " + number); 
    // need to loop this i suppose in relative to user input 
    while (number != 1) { 
     number = (number & 1) != 0 ? number * 3 + 1 : number >> 1; 
     count++; 
    } 
    System.out.println(" has endurance: " + count); 

    return number; 
} 
+0

훨씬 더 명확하게 설명하십시오. –

+0

Collatz 추측을 구현하려는 것 같습니다. – MightyPork

+0

예, Collatz 추측을 사용하고 있습니다. 그리고 나는 그 방법을 사용자 입력 값이 낮고 사용자 입력 값이 높은 (예를 들어 15에서 245034 사이) 모든 숫자에 적용 할 필요가있다. 그런 다음 1에 도달하기 전에 가장 많은 작업을 수행 한 번호를 찾습니다. –

답변

0

낮은 숫자와 높은 숫자 사이의 모든 숫자를 반복해야합니다. for -loops로 봐 : (: 매개 변수로에서 통과 힌트)

for(int number = low; number <= high; number++) 
{ 
    // do something with number 
} 

은 어떻게 든 당신이 루프 내의 모든 번호를 a를 실행해야합니다. 그런 다음 가장 높은 수의 번호를 추적하십시오.

아, 코드 이름을 사용하지 않고 수행 한 내용을 누구도 이해할 수 없으므로 ab보다 명확하게 이름을 지정하십시오. 모든

0

첫째 방법 a로부터 입력 이동 : 결과는 다음 일 수

int bestNumber = -1; 
int bestScore = -1; 
for (int i = low; i <= high; i++) { 
    int score = a(i); 
    if (score < bestScore) { 
     bestNumber = i; 
     bestScore = score; 
    } 
} 

: low 사이 high

public static void main(String[] args) { 
    System.out.print("Enter an integer to be checked: "); 
    Scanner input = new Scanner(System.in); 
    int number = input.nextInt(); 
    a(number); 
    b(); 
} 

public static int a(int number) { 
    int count = 0; 
    System.out.print("The number " + number); 
    [...] 

는 그런 다음 반복 간단한 for 루프를 사용하여 bestNumber에서 발견되었습니다.

0

관련성이 높은 경우에 대비하여 더 진보 된 접근 방법을 제안 할 예정입니다. 시간 효율성에 관심이 있으시면 Memoization 또는 Dynamic Programming, 특히 역 드래곤 재귀를 도울 수 있습니다.

나는 당신에게 힌트를 줄 것이다. 더 많은 것이 필요하다면, 단지 의견을 말하십시오.

예를 들어 3을 사용하십시오. 하나의 변환 T는 T (3) = 10이다. 이전에 v 변환이 10 대 1로 걸리고 (10, v) 맵에 저장 되었다면 즉시 (v + 1) 단계를 거쳐 3에서 1이됩니다.