日期:2014-05-20  浏览次数:20732 次

java 整数的划分输出
比如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 


我的代码如下


package match.example;

 class aa {
public static void main(String[] args) {
int n=6;
int array[];
for (int i = 0; i < n; i++) {
array=new int[n+1];
array[0]=n-i;
pai(0,n-i,i,array,n);
System.out.println();
}
}

public static void pai(int i,int da1,int da2,int array[],int n){
array[i]=da1;
array[i+1]=da2;
while(array[i+1]>array[i]){//如果后面的数大于前面的数 则后面的数减去1,再后面的数加1 【循环判断】
array[i+1]-=1;
array[i+2]+=1;
}
if(array[i+2]>array[i+1]){
pai(i+1,array[i+1],array[i+2],array,n);
}
outarray(array);
int po;
if(array[1]>1){//若第二个数大于1 则需要继续划分
po=0;
for (int j = 1; j < n-1; j++) {
if(array[j]>1&&array[j+1]<=1){
po=j;
break;
}
}
pai(po,array[po]-1,array[po+1]+1,array,n);
}
}


public static void outarray(int array[]){
for (int i = 0; i < array.length; i++) {
if(array[i]!=0){
if(array[i+1]==0){
System.out.print(array[i]+" ");
break;
}else{
System.out.print(array[i]+"+");
}
}
}
}
}



 输出结果:
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 2+1+1+1+1  
1+1+1+1+1+1 1+1+1+1+1+1 1+1+1+1+1+1 1+1+1+1+1+1 

找了半天 就是没找到哪里有错 各位帮忙看看 小妹感激不尽 呵呵 O(∩_∩)O~



------解决方案--------------------
没怎么看程序。你应该对最后为1时进行判断一下,因为为1时是一种特殊情况
------解决方案--------------------
看在妹子的份上
Java code

        if (array[i + 2] > array[i + 1]) {
            pai(i + 1, array[i + 1], array[i + 2], array, n);
            return;
        }

------解决方案--------------------
这是我去年写的,你可以参考下,http://blog.csdn.net/yangxingzou/article/details/6370745