푸 시 알고리즘 1

1693 단어 알고리즘
푸 시 알고리즘 (1, 2 멱 수열)
  • 문제 설명: x, y 는 정수 이 고 M = {2 ^ x, 3 ^ y | x > = 0, y > = 0} 을 구하 고 n 을 입력 하여 요소 가 작은 것 에서 큰 것 으로 배 열 된 쌍 멱 수열 의 n 번 째 값 과 n 번 째 항목 과.
  • 전달 사고:
  • 1. 수열 은 2 의 멱 과 3 의 멱 으로 구성 되 어 있 기 때문에 첫 번 째 항목 은 1 (x = y = 0) 시 2, 두 번 째 항목 부터 작은 것 부터 큰 것 까지 의 배열 을 실현 하기 위해 두 개의 변수 power 2 (2 의 멱), power 3 (3 의 멱) 를 설정 합 니 다. 분명히 power2! =power3 3 3, 초기, power2 = 1, power3 = 1, sum = 1, 4, 2 * power2 < 3 * power3 3 일 때 전달 규칙 에 따라 power2 = 2 * power2, set [i] = power2 5, 2 * power2 > 3 * power3 일 때 전달 규칙 에 따라 power3 = 3 * power3, set [i] = power3
    
    private static void powerSet(int n) {
    		//     
    		double set[] = new double[100];
    		set[1] = 1d;
    		//power2  2  ,power3  3  ,sum  
    		double power2 = 1d, power3 = 1d, sum = 1d;
    		//index2  2   ,index3 3   ,baseNum     
    		int index2 = 0, index3 = 0, baseNum = 0;
    		for (int i = 2; i <= n; i++) {
    			if (2 * power2 < 3 * power3) {
    				power2 = 2 * power2;
    				index2++;
    				set[i] = power2;
    				sum = sum + power2;
    				baseNum = 2;
    			} else {
    				power3 = 3 * power3;
    				index3++;
    				set[i] = power3;
    				sum = sum + power3;
    				baseNum = 3;
    			}
    		}
    		if (baseNum == 2) {
    			System.out.println("    " + n + "  :" + 2 + "^" + index2 + "="
    					+ set[n]);
    		} else {
    			System.out.println("    " + n + "  :" + 3 + "^" + index3 + "="
    					+ set[n]);
    		}
    		System.out.println("   " + " " + n + "   :" + sum);
    	}
    

    좋은 웹페이지 즐겨찾기