文字のすべての組み合わせ - - バウンドオファー安全性を証明するために、全体の組み合わせを

/ * 
タイトル:
	文字列の繰り返しを除いた全組成物を与えられました。
* / 
/ * 
思考:
	再帰。
	ABC所与の実施形態は、出力の組み合わせた長さは、1、2、であり、
	2の組合せの長さ、(AB、AC)、及び選択されない(BC)の場合をサブ選択。
	;選択し、文字列の文字の組み合わせ1の残りの長さを選択し
	、選択されない残りの二つに組み合わせ長文字列を選択します。
* / 
の#include <iostreamの> 
する#include <stdio.hに> 
する#include <string>に

使用した名前空間STD; 

文字列CURR、

ボイドコンビネーション(STR文字列、int型のLEN、beginIndexパラメータはint){ 
	//文字列の終わりを通過するが、必要な長さは十分、直接のリターンではありません。
    IF(!beginIndexパラメータのstr.size ==()LEN = 0 &&){ 
        リターン; 
    } 
	//十分長い場合には、出力電流ストリング。
    IF(LEN == 0){ 
        COUT CURR << << ""; 
    }他{ 
		//現在選択された文字列
        CURR + =(STR [beginIndexパラメータ])。
        組み合わせ(STR、LEN-1、beginIndexパラメータ+ 1)。
		//不选择当前字符串的情况
        curr.erase(curr.size() - 1)。
        組み合わせ(STR、lenは、beginIndexパラメータ+ 1)。
    } 
} 

int型のmain(){ 
    文字列str。
    一方(のgetline(CIN、STR)){ 
        (STR == "")もし
            COUT << ENDL。
        他{ 
            ため(INT LEN = 1; LEN <= str.size(); lenを++){ 
                組み合わせ(STR、lenを、0); 
                coutの<<てendl; 
            } 

        } 

    } 

}

   

おすすめ

転載: www.cnblogs.com/buaaZhhx/p/11966363.html