概述
先 考 虑 如 果 s , t 之 一 是 a a , b b , c c 的 形 式 先考虑如果s,t之一是aa,bb,cc的形式 先考虑如果s,t之一是aa,bb,cc的形式
那 么 重 复 a b c a b c a b c a b c ( 只 包 含 a b , b c , c a ) 那么重复abcabcabcabc(只包含ab,bc,ca) 那么重复abcabcabcabc(只包含ab,bc,ca)
或 重 复 a c b a c b a c b a c b ( 只 包 含 a c , c b , b a ) 一 定 有 一 种 满 足 条 件 或重复acbacbacbacb(只包含ac,cb,ba)一定有一种满足条件 或重复acbacbacbacb(只包含ac,cb,ba)一定有一种满足条件
如 果 s , t 都 不 是 重 复 的 字 母 如果s,t都不是重复的字母 如果s,t都不是重复的字母
那 么 有 6 种 构 造 , 分 别 是 a b c 的 6 种 全 排 列 那么有6种构造,分别是abc的6种全排列 那么有6种构造,分别是abc的6种全排列
n 个 a , n 个 b , n 个 c , a a a b b b c c c n个a,n个b,n个c,aaabbbccc n个a,n个b,n个c,aaabbbccc
n 个 a , n 个 c , n 个 b , a a a c c c b b b n个a,n个c,n个b,aaacccbbb n个a,n个c,n个b,aaacccbbb
b b b a a a c c c bbbaaaccc bbbaaaccc
b b b c c c a a a bbbcccaaa bbbcccaaa
c c c a a a b b b cccaaabbb cccaaabbb
c c c b b b a a a cccbbbaaa cccbbbaaa
#include <bits/stdc++.h>
using namespace std;
bool isok(string s,string q,string w)
{
if( s==q||s==w ) return false;
return true;
}
int n;
string s,t,ab="ab",ac="ac",ba="ba",bc="bc",ca="ca",cb="cb";
void print(string s)
{
for(int i=1;i<=n;i++) cout << s[0];
for(int i=1;i<=n;i++) cout << s[1];
for(int i=1;i<=n;i++) cout << s[2];
exit(0);
}
int main()
{
cin >> n >> s >> t;
cout << "YES" << endl;
if( s=="aa"||s=="bb"||s=="cc" )
{
if( t!=ab&&t!=bc&&t!=ca ) for(int i=1;i<=n;i++) cout << "abc";
else for(int i=1;i<=n;i++) cout << "acb";
return 0;
}
if( t=="aa"||t=="bb"||t=="cc" )
{
if( s!=ab&&s!=bc&&s!=ca ) for(int i=1;i<=n;i++) cout << "abc";
else for(int i=1;i<=n;i++) cout << "acb";
return 0;
}
if( isok(s,ab,bc)&&isok(t,ab,bc) ) print("abc");
if( isok(s,ac,cb)&&isok(t,ac,cb) ) print("acb");
if( isok(s,ba,ac)&&isok(t,ba,ac) ) print("bac");
if( isok(s,bc,ca)&&isok(t,bc,ca) ) print("bca");
if( isok(s,ca,ab)&&isok(t,ca,ab) ) print("cab");
if( isok(s,cb,ba)&&isok(t,cb,ba) ) print("cba");
}
最后
以上就是痴情宝马为你收集整理的E. Two Small Strings(构造方法)的全部内容,希望文章能够帮你解决E. Two Small Strings(构造方法)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复