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 安卓adb backup备份应用数据失败
    • ¥15 eclipse运行项目时遇到的问题
    • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
    • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
    • ¥50 成都蓉城足球俱乐部小程序抢票
    • ¥15 yolov7训练自己的数据集
    • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
    • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
    • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)