java 整数的划分输出

wxl1990721 2012-03-17 08:28:15
比如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~

...全文
228 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxl1990721 2012-03-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 abc130314 的回复:]

看在妹子的份上
Java code

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


看在哥子改对的份上。。。。O(∩_∩)O~ 谢谢
dengsilinming 2012-03-17
  • 打赏
  • 举报
回复
没怎么看程序。你应该对最后为1时进行判断一下,因为为1时是一种特殊情况
zoyation 2012-03-17
  • 打赏
  • 举报
回复
这是我去年写的,你可以参考下,http://blog.csdn.net/yangxingzou/article/details/6370745
abc130314 2012-03-17
  • 打赏
  • 举报
回复
看在妹子的份上

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

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧