Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "ABC Gene"
https://onlinejudge.u-aizu.ac.jp/problems/2708
・ABCの遺伝子配列
僕が作成、提出したコードは、以下のとおりです。
・Aizu Online Judge in C++ #Volume27 - 2708 : ABC Gene
/* Aizu Online Judge in C++ #Volume27 - 2708 : ABC Gene https://onlinejudge.u-aizu.ac.jp/problems/2708 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; bool f(string s){ if(s=="ABC"){ return true; } ll n=s.size(); if(n<5){ return false; } char c=((s.substr(0,3)=="ABC") ? 'A' : ((s.substr(n-3)=="ABC") ? 'C' : 'B')); string t=""; for(ll i=0;i<n;i++){ if(s[i]+1==s[i+1] && s[i+1]+1==s[i+2]){ t+=c; i+=2; }else if(s[i]==c){ return false; }else{ t+=s[i]; } } return (t!=s && f(t)); } int main(void){ string s; cin>>s; cout<<(f(s) ? "Yes\n" : "No\n"); return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/