정수 구분 예 를 들 어 정수 n = 6 에 대해 서 는 6, 5 + 1 로 나 눌 수 있다.

import java.util.Scanner;


public class IntHuafen {
      /*                   
			 ,     n=6,     : 
			6 
			5+1 
			4+2, 4+1+1 
			3+3, 3+2+1, 3+1+1+1 
			2+2+2, 2+2+1+1, 2+1+1+1+1 
			1+1+1+1+1+1+1 
			      ,        n,          。
			        n (  1~10)
			            。
	*/ 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner cin=new Scanner(System.in);
		int n=cin.nextInt();
	int []data=new int[10000];
		f(data,n,0);//  1 n   
		
	}
//n->6,curr    
	private static void f(int[] data ,int n,int k) {
		// TODO Auto-generated method stub
		if (n==0) {
			for (int i = 0; i < k; i++) {
				System.out.print(data[i]+" ");
			}
			System.out.println();
			return ;
		}
		for (int i = n; i > 0; i--) {
			if (k>0&&i>data[k-1]) {//            
				//  k=0,data[k-1]   ,   k>0   ,    ,      
				continue;
			}
			data[k]=i;
			f(data,n-i,k+1);
		}
			
		}
	}

좋은 웹페이지 즐겨찾기