中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

字符串的排列——28

發布時間:2020-07-20 20:28:32 來源:網絡 閱讀:328 作者:給我個bit位 欄目:編程語言

    輸入一個字符串,打印出該字符串中字符的所有排列。例如輸入字符串abc,則打印出由字符a、b、c所能排列出來的所有字符串abc、acb、bac、bca、cab和cba。


    對于一個字符來說,只有一個排列就是其自身,那么對于多個字符的組合來說,也是有規律可循的:可以在字符串中選出一個字符來固定出頭部,比如上述先用a來開頭,那么后面的部分就由b、c來組成,之后再將b、c分別更換為頭部,后面的就由剩下的字符來組成,而如果字符串中的字符比較多的時候,可以先從字符串的尾部開始排列,首先排列最后兩個字符,交換后面兩個字符,然后增加到三個字符,更換頭部,排列剩下的部分,再依次增加到四個字符,更換頭部,排雷剩下的部分......因此,這種思路可以用遞歸來實現:

#include <iostream>
using namespace std;

void PrintAllArray(char* str, char *p_start)
{
    if(str != NULL)//判斷參數有效性
    {   
        //當遍歷到字符串結尾的時候就應當將字符串打印出來
        if(*p_start == '\0')
        {
            cout<<str<<endl;
            return;
        }

        for(char *tmp = p_start; *tmp != '\0'; ++tmp)
        {
            swap(*tmp, *p_start);//將當前頭部更換為所有可能的字符
            PrintAllArray(str, p_start+1);//進行遞歸排列
            swap(*tmp, *p_start);//不能影響再次進行有序的交換,所以排列之后應當再將其交換回來
        }
    }   
}

int main()
{
    char str[] = "abcd";
    char* p_tmp = str;
    PrintAllArray(str, p_tmp);
    return 0;
}


運行程序:

字符串的排列——28



《完》

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

庆城县| 桓仁| 凌海市| 勐海县| 甘肃省| 聊城市| 拜泉县| 南涧| 屏南县| 青海省| 水城县| 公主岭市| 谢通门县| 闽清县| 漯河市| 离岛区| 大城县| 石城县| 大渡口区| 景宁| 大埔区| 福贡县| 靖西县| 沅陵县| 区。| 内江市| 拉萨市| 平江县| 咸丰县| 淮阳县| 闸北区| 叶城县| 宜宾市| 孙吴县| 八宿县| 鄢陵县| 财经| 岑溪市| 墨江| 乡宁县| 天峨县|