自然数拆分为连续和

转载请注明作者与出处:franciscolv http://www.cnblogs.com/franciscolv/archive/2011/11/20/2255881.html

package SortSet;

import java.util.HashMap;
import java.util.Map;

/**
* 9 =2+3+4; 9=4+5; 拆分整数N
*
@author franciscolv
*/
public class DividedNum {
private static Map<Integer, Integer> map = new HashMap<Integer, Integer>();

public static void main(String[] args) {
getDividedNum(9);
for (int k : map.keySet()) {
print(k, map.get(k));
}
}

public static Map<Integer, Integer> getDividedNum(int num) {
int i = 0;
int mid = (num + 1) / 2;
int sum = 0;
int j = i;
while (i < mid) {
if (sum < num) {
j++;
sum += j;
} else if (sum == num) {
map.put(i, j);
sum -= i;
i++;
} else {
sum -= i;
i++;
}
}
return map;
}

public static void print(int i, int j) {
for (int k = i; k < j; k++)
System.out.print(k + "+");
System.out.println(j);
}
}



posted @ 2011-11-20 11:41  franciscolv  阅读(231)  评论(0编辑  收藏  举报