パートA:ユーザーに文字列を入力させます。次に、文字列の最初の文字を表示し、次に最後の文字を表示し、次に2番目の文字を表示し、3番目の文字を表示します。文字列が "abcdef"の場合は、 afbecd(入力「ABCDEF」) 12345 - > 15243 123456] - > [162534再帰を使用してC++で文字列をアンマウントする
パートB:今、上記の文字列をunmash。 すなわち、162534 - > 123456
私はパートAを稼働させました。
#include <iostream>
using namespace std;
void mash(string s);
int main()
{
string sequence;
cout << "Enter a sequence: ";
getline(cin, sequence);
mash(sequence);
}
void mash(string s)
{
int a = s.length();
if (a == 0)
{
return;
}
if (a == 1)
{
cout << s;
return;
}
cout << s[0];
if(a>1)
{
cout << s[a - 1];
s = s.substr(1,a-2);
mash(s);
}
}
が、私は、私は、私も位置に文字を印刷しようとすることができます推測部Bにアプローチする方法か見当もつかない、その後、私は私ができると思いますので、私は123を取得します、文字列162534で言います最後のものから最初のもの、すなわち456までの奇数の位置文字を印刷してみてください。これらの2つを組み合わせると元の文字列が得られますが、部分Bを解くために再帰を使う方法はありません。
ヒント:unmash( "2534")とは何ですか、それはどのようにしてunmash( "162534")に関連しますか? – hobbs
私は "2534"の文字列の最後に2番目の文字である5を移動したいと思いますし、6も "162534"で終了しますか? – Hugh