自然数拆分为连续和
转载请注明作者与出处: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);
}
}