整数划分问题

将正整数n表示成一系列正整数之和:n=n1+n2+…+nk,
如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

其中n1≥n2≥…≥nk≥1,k≥1。
正整数n的这种表示称为正整数n的划分。求正整数n的不
同划分个数。

java实现:

public class DiviteInt{
 public static void main(String[] args)
 {
  int n=12;
 
  for(int i=n;i>0;i--)
  {
   int last=n-i;
   if(last==0)
   {
    System.out.println(i+";");
    continue;
   }
   find(i+"",last,i);
   System.out.println("");
  }
 }
 public static void find(String str,int last,int max)
 {
  if(last<0)
   return;
  if(last==0)
   System.out.print(str+";");
  for(int i=max;i>0;i--)
  {
   find(str+"+"+i,last-i,i);
  }
 }
}

你可能感兴趣的:(java,String,Class,n2)