C ++交換冗談

ニンニクと少しいたずら。今回は、テストでは、彼女の妹は冷血殺害報告しています。

元々姉妹からラボに記録されたスペースで区切られた任意の二つの数字の間に、nの配列1。しかし、「ピット妹」ニンニクは実際にデジタル間のスペースを削除与えた数字の文字列にデジタル・シーケンスの全体の長さと1〜100であり、ヘッダスペースなし。

今、私の姉はすぐにテストデータ復旧にプログラムを書く見つけるニンニク、怒りを持っています。

入力

入力ファイルの行、列は -実験データニンニクメッシングです。

文字列の長さ 1〜100。

出力

出力コモンライン、元のテストデータの姉妹 --1にn個の出力。

任意の二つのデータの間にスペースがあります。

正解の要件に沿って複数設定した場合、任意のグループの出力とすることができます。

この質問への唯一の答えは、答えの要件が正しい満たしていません

サンプル入力のコピー

4111109876532

サンプル出力コピー

4 1 11 10 9 8 7 6 5 3 2

 

アイデア:

①列の数は1〜100であるので、それが2桁の数であってもよいが、また、今後のデジタルB出力を保存するために番号が続く出力の数、LEN計算された数を使用するように、数字列が与えられてもよいです。

数②は、再帰関数が続く、xの値を保持する配列bを使用しない場合は、そこに同じ数になる前に、出力の数を決定する最初に出力されるように、Xで表される次DEF関数に渡されます。もしそれは数xが出力される2つの数字で指定し、それは、xの値を保持するために使用される二つの数X、Bが格納され、そしてDEF関数に渡された数を下げています。

③最終的な出力フォーマットスペース、全ての数字は出力の数の出力に応じて配列b、Bを使用して保存されていると判定された場合。

書式#include <iostreamの> 
の#include < 文字列 >
 使用して 名前空間はstdを、
char型 [ 105 ]。
INT LEN、N、B [ 105 ]。
ブール F、VIS [ 105 ]。
ボイド DEF(INT S、INT NUM)
{ 
    場合(f)のリターン;
    もし(S == LEN)
    { 
        F = int型 iは= 0 ; I <NUM ++ i)が
        {
            coutの << B [i]は<< "  " ; 
        } 
        を返します
    } 
    INT X = [S] - ' 0 ' もし(VIS [X] && X <= N && X>!0 
    { 
        VIS [X] = 
        B [NUM] = X。
        DEF(S + 1、NUM + 1 )。
        VIS [X] = 
    } 
    、X = X * 10 + [S + 1 ] - ' 0 ' もし(VIS [X] && X <= N && X>!0 
    { 
        VIS [X] = 
        B [NUM] = X。
        DEF(S + 2、NUM + 1 )。
        VIS [X] = 
    } 
} 
int型のmain(){ 
    CIN >> 
    LEN = STRLEN()。
    N =(LEN <= 9?LEN:(LEN - 9)/ 2 + 9 )。
    DEF(0);0 
}

 

おすすめ

転載: www.cnblogs.com/liushipeng648/p/12593432.html