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