打印一个整数划分全部方案
整数划分就是将一个正整数表示成一系列正整数之和 例如整数6可以划分成一下11中方案:
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
半成品代码:public class Main{ static int sum=0; static int t[]=new int[10]; static void dfs(int n,int m) { if(sum==m) {// Arrays.sort(t,1,n-1); System.out.print(m+"= "); for(int k=1;k<=n-1;k++) System.out.print(t[k]); System.out.println(); } else { for(int i=1;i<=m;i++)//for(int i=m;i>=1;i--) { sum+=i; if(sum<=m) { t[n]=i; dfs(n+1,m); sum-=i; }else { sum-=i; return; } } } } public static void main(String args[]) { dfs(1,6); }}正常打印:6= 1111116= 111126= 111216= 11136= 112116= 11226= 11316= 1146= 121116= 12126= 12216= 1236= 13116= 1326= 1416= 15....但是去掉第一个注释想排下序就打印这样的了:........6= 156= 111216= 11126= 11216= 1136= 11216= 1126= 1316= 146= 11316= 1126= 1216= 136= 1416= 126= 516= 6很奇怪但是不知道什么原因。我把第二行注释也去掉上面的for加上注释,却只打印一行:6= 6