91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

字符串的排列——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

区。| 桃园县| 临夏市| 丰城市| 苍梧县| 成都市| 平塘县| 泸州市| 滁州市| 黑山县| 隆化县| 苍山县| 伊宁县| 浙江省| 衡东县| 拉孜县| 大同县| 台前县| 华宁县| 广汉市| 射洪县| 伊川县| 上犹县| 阳信县| 章丘市| 桐乡市| 托克托县| 河源市| 富顺县| 元谋县| 和平区| 杭锦旗| 铁岭市| 克山县| 深泽县| 黄梅县| 曲阳县| 赫章县| 赣榆县| 无锡市| 龙川县|