/ * タイトル: 文字列の繰り返しを除いた全組成物を与えられました。 * / / * 思考: 再帰。 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; } } } }