Threese 2018-12-06 04:07
浏览 273

字符串的全排问题(递归函数)

求助 我想解决字符串的全排问题
然后我用的是老虎机的方法 用一个数组来表示输出顺序
方法用的是函数的递归
编译通过了但是运行会无限循环还是溢出

以下是代码

#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;
            }
        }
    }
}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 保护模式-系统加载-段寄存器
    • ¥15 电脑桌面设定一个区域禁止鼠标操作
    • ¥15 求NPF226060磁芯的详细资料