成都计生办的李琢主任是个好官啊,就是以为微博别人看不见 (转载)# Joke - 肚皮舞运动
C*U
1 楼
假设我有一个正整数n,我要把他写成一些正整数的和。是组合问题,也就是说数字的
顺序不考虑。
有什么好的办法没有
我写了一个recrusive的,请大牛们指教一下
int count = 0;
//构造以max为最大数的 number的partition
void partitionWithMax(int number, int max) {
if(!number) {
count++;
return;
}
else {
int newMax = number > max ? max : number;
for(int i = newMax; i > 0; i--) {
partitionWithMax(number - i, i);
}
}
}
//让max从1到number都走一边
void partition(int number) {
for(int i = number; i > 0; i--) {
partitionWithMax(number - i, i);
}
}
顺序不考虑。
有什么好的办法没有
我写了一个recrusive的,请大牛们指教一下
int count = 0;
//构造以max为最大数的 number的partition
void partitionWithMax(int number, int max) {
if(!number) {
count++;
return;
}
else {
int newMax = number > max ? max : number;
for(int i = newMax; i > 0; i--) {
partitionWithMax(number - i, i);
}
}
}
//让max从1到number都走一边
void partition(int number) {
for(int i = number; i > 0; i--) {
partitionWithMax(number - i, i);
}
}