[C/C++]白駿(BOJ)12919 AとB 2
質問の概要📌
質問リンク📢
https://www.acmicpc.net/problem/12919
問題を解く📝
初めて見た時に思いついたSがTを作る方法はいろいろあり、近づきにくいです.そこで,逆TでSを作成する方法を選択する.
筆者はC++が提供する文字列関数と再帰的完全検索によってコミュニケーションを得た.
Tから、1文字目がAとBの場合は別々に条件処理を行い、完全探索を行い、TがSでない場合は0を出力する.
コード#コード# #include<iostream>
#include<algorithm>
#include<string>
using namespace std;
string S, T;
bool flag = false;
string Recursion(string str)
{
if (str.size() == S.size() || flag) // S와 길이가 같아졌거나 이미 그 문자열을 만들 수 있다면
{
if (str == S)
flag = true;
return str;
}
if (str.size() > 0)
{
if (str[0] == 'A') // 첫 번째 문자가 A인 경우
{
if (str.back() == 'A')
{
str.pop_back();
Recursion(str);
str.push_back('A');
}
}
else // 첫 번째 문자가 B인 경우
{
string tmp = str;
reverse(tmp.begin(), tmp.end());
str = tmp;
str.pop_back();
Recursion(str);
reverse(tmp.begin(), tmp.end());
str = tmp;
if (str.back() == 'A') // 마지막 문자가 A인 경우
{
str.pop_back();
Recursion(str);
str.push_back('A');
}
}
}
return str;
}
int main()
{
cin >> S >> T;
Recursion(T);
cout << flag;
return 0;
}
Reference
この問題について([C/C++]白駿(BOJ)12919 AとB 2), 我々は、より多くの情報をここで見つけました
https://velog.io/@wjawksl/C-백준BOJ-12919-A와-B-2
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
https://www.acmicpc.net/problem/12919
問題を解く📝
初めて見た時に思いついたSがTを作る方法はいろいろあり、近づきにくいです.そこで,逆TでSを作成する方法を選択する.
筆者はC++が提供する文字列関数と再帰的完全検索によってコミュニケーションを得た.
Tから、1文字目がAとBの場合は別々に条件処理を行い、完全探索を行い、TがSでない場合は0を出力する.
コード#コード# #include<iostream>
#include<algorithm>
#include<string>
using namespace std;
string S, T;
bool flag = false;
string Recursion(string str)
{
if (str.size() == S.size() || flag) // S와 길이가 같아졌거나 이미 그 문자열을 만들 수 있다면
{
if (str == S)
flag = true;
return str;
}
if (str.size() > 0)
{
if (str[0] == 'A') // 첫 번째 문자가 A인 경우
{
if (str.back() == 'A')
{
str.pop_back();
Recursion(str);
str.push_back('A');
}
}
else // 첫 번째 문자가 B인 경우
{
string tmp = str;
reverse(tmp.begin(), tmp.end());
str = tmp;
str.pop_back();
Recursion(str);
reverse(tmp.begin(), tmp.end());
str = tmp;
if (str.back() == 'A') // 마지막 문자가 A인 경우
{
str.pop_back();
Recursion(str);
str.push_back('A');
}
}
}
return str;
}
int main()
{
cin >> S >> T;
Recursion(T);
cout << flag;
return 0;
}
Reference
この問題について([C/C++]白駿(BOJ)12919 AとB 2), 我々は、より多くの情報をここで見つけました
https://velog.io/@wjawksl/C-백준BOJ-12919-A와-B-2
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
string S, T;
bool flag = false;
string Recursion(string str)
{
if (str.size() == S.size() || flag) // S와 길이가 같아졌거나 이미 그 문자열을 만들 수 있다면
{
if (str == S)
flag = true;
return str;
}
if (str.size() > 0)
{
if (str[0] == 'A') // 첫 번째 문자가 A인 경우
{
if (str.back() == 'A')
{
str.pop_back();
Recursion(str);
str.push_back('A');
}
}
else // 첫 번째 문자가 B인 경우
{
string tmp = str;
reverse(tmp.begin(), tmp.end());
str = tmp;
str.pop_back();
Recursion(str);
reverse(tmp.begin(), tmp.end());
str = tmp;
if (str.back() == 'A') // 마지막 문자가 A인 경우
{
str.pop_back();
Recursion(str);
str.push_back('A');
}
}
}
return str;
}
int main()
{
cin >> S >> T;
Recursion(T);
cout << flag;
return 0;
}
Reference
この問題について([C/C++]白駿(BOJ)12919 AとB 2), 我々は、より多くの情報をここで見つけました https://velog.io/@wjawksl/C-백준BOJ-12919-A와-B-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol