给出一个字符数组的全排列

None.gif#include <stdio.h>
None.gif
None.gif char InputString[100];
None.gif char OutputString[100];
None.gif int MarkArray[100];
None.gif int StringLength;
None.gif int Number;
None.gif
None.gif void processString( int cursor)
ExpandedBlockStart.gif {
InBlock.gif    int i=0;
InBlock.gif    if(cursor==StringLength)
ExpandedSubBlockStart.gif    {
InBlock.gif        puts(OutputString);
InBlock.gif        Number++;
InBlock.gif        return;
ExpandedSubBlockEnd.gif    }
InBlock.gif    while(i<StringLength)
ExpandedSubBlockStart.gif    {
InBlock.gif        if(MarkArray[i]==0)
ExpandedSubBlockStart.gif        {
InBlock.gif            MarkArray[i]=cursor+1;
InBlock.gif            OutputString[cursor]=InputString[i];
InBlock.gif            processString(cursor+1);
InBlock.gif            MarkArray[i]=0;
ExpandedSubBlockEnd.gif        }
InBlock.gif        i++;
ExpandedSubBlockEnd.gif    }
ExpandedBlockEnd.gif}
None.gif
None.gif int main()
ExpandedBlockStart.gif {
InBlock.gif    int i=0;
InBlock.gif    for(i=0;i<100;i++) MarkArray[i]=0;
InBlock.gif    
InBlock.gif    gets(InputString);
InBlock.gif    
InBlock.gif    StringLength=0;
InBlock.gif    while(InputString[StringLength]!='\0'&&StringLength<100) StringLength++;
InBlock.gif    OutputString[StringLength]='\0';
InBlock.gif    
InBlock.gif    processString(0);
InBlock.gif    
InBlock.gif    printf("Total:%d",Number);
InBlock.gif    return 0;
ExpandedBlockEnd.gif}
None.gif
说明:
递归算法,cursor表示游标,每次从输入的数组中读出一个字符,游标前进一,然后递归,当游标等于输入的数组的长度时,递归结束,输出结果。
本文转自冬冬博客园博客,原文链接:http://www.cnblogs.com/yuandong/archive/2006/08/16/478568.html ,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值