求助 我想解决字符串的全排问题
然后我用的是老虎机的方法 用一个数组来表示输出顺序
方法用的是函数的递归
编译通过了但是运行会无限循环还是溢出
以下是代码
#include <stdio.h>
#define SIZE 100
//prototype
void Process(int k,int n,char string[SIZE],int num[SIZE]);
int main(void)
{
int num[SIZE];
for(int i = 0;i < SIZE;i++)
{
num[i] = -1;
} //initialize excluding array
printf("Please enter a string :\t");
char string[SIZE];
scanf("%99s",string); //scan string The SIZE should be changed handly
int n = 0;
for(int i = 0;i < SIZE;i++)
{
if(string[i] == '\0');
{
n = i;
}
} //find out the number of the elements of the string
Process(0,n,string,num);
}
void Process(int k,int n,char string[SIZE],int num[SIZE])
{
int judge = 0;
if(k == n)
{
int counter = 0;
for(int i =0;i < n;i++)
{
counter = num[i];
printf("%c",string[counter]);
}
puts("");
}
else
{
for(int i = 0;i < n;i++)
{
for(int i1 = 0;i1 < SIZE;i1++)
{
if(num[i1] == i)
{
judge = 1;
break;
}
}
if(judge == 1)
{
judge = 0;
continue;
}
else if(judge == 0)
{
num[k] = i;
Process(k+1,n,string,num);
num[k] = -1;
}
}
}
}