可重复的全排列问题
我有一个可重复的全排列,比如说7位字母的数量就是26的7次方。占用巨大的内存。问有什么方法可以分解一下。我用先组合后排列的方式分解也不行,因为组合后的可重复全排列个数很难得出,请教各位大虾有什么高招,我高分相送。 问题点数:35、回复次数:4Top
1 楼spirit_sheng(老盛)回复于 2006-12-01 18:11:59 得分 35
void Full(int * base, int basesize, int count)
{
int * visit = new int[count];
int i;
for(i=0;i<count;i++)visit[i]=0;
while(1){
for(i=0;i<count;i++)printf("%d ",base[visit[i]]);
printf("\n");
for(i=count-1;i>=0;i--){if(visit[i]==basesize-1)visit[i]=0;else break;}
if(i<0)break;//Finished
visit[i]++;
}
delete [] visit;
}
int main(int argc, char* argv[])
{
int a[]={2, 5, 6};
Full(a, 3, 2);
return 0;
}Top
2 楼spirit_sheng(老盛)回复于 2006-12-01 18:12:34 得分 0
上面是直接回溯, 不用保存Top
3 楼leonatcs(LeonKennedy)(时常逛一逛csdn,有益身心健康。)回复于 2006-12-01 23:38:12 得分 0
楼主的性欲真低。Top
4 楼lucho(lucho)回复于 2006-12-02 13:39:12 得分 0
“上面是直接回溯, 不用保存”
但是我怎么可以拿过来一条一条用,还是要保存一下啊。Top





