题目链接

问题分析

由于三个字母是等价的,所以大致可以分为如下几种情况:

  • aa, ab

  • ab, ac

  • ab, ba

  • ab, bc

不难发现,第\(3\)中情况可能造成无解(\(n>1\)时),而剩下的情况都可以由\(aaabbbccc\)或\(abcabcabc\)这样的串解决。所以直接枚举\(3\)个字母的全排列,然后拓展成上面两种情况分别判断一下即可。

参考程序

#include <bits/stdc++.h>
using namespace std; int n;
char A[ 10 ], B[ 10 ];
int Map[ 10 ][ 10 ];
int Ans[ 10 ]; bool Check1() {
return Map[ Ans[ 1 ] ][ Ans[ 2 ] ] || Map[ Ans[ 2 ] ][ Ans[ 3 ] ] || Map[ 1 ][ 1 ] || Map[ 2 ][ 2 ]|| Map[ 3 ][ 3 ];
} bool Check2() {
return Map[ Ans[ 1 ] ][ Ans[ 2 ] ] || Map[ Ans[ 2 ] ][ Ans[ 3 ] ] || Map[ Ans[ 3 ] ][ Ans[ 1 ] ];
} int main() {
scanf( "%d", &n );
scanf( "%s%s", A + 1, B + 1 );
Map[ A[ 1 ] - 'a' + 1 ][ A[ 2 ] - 'a' + 1 ] = 1;
Map[ B[ 1 ] - 'a' + 1 ][ B[ 2 ] - 'a' + 1 ] = 1;
Ans[ 1 ] = 1; Ans[ 2 ] = 2; Ans[ 3 ] = 3;
if( n == 1 ) {
while( Map[ Ans[ 1 ] ][ Ans[ 2 ] ] || Map[ Ans[ 2 ] ][ Ans[ 3 ] ] )
if( !next_permutation( Ans + 1, Ans + 4 ) ) {
printf( "NO\n" );
return 0;
}
printf( "YES\n" );
printf( "%c%c%c\n", Ans[ 1 ] + 'a' - 1, Ans[ 2 ] + 'a' - 1, Ans[ 3 ] + 'a' - 1 );
return 0;
}
while( true ) {
if( !Check1() ) {
printf( "YES\n" );
for( int i = 1; i <= n; ++i ) printf( "%c", Ans[ 1 ] + 'a' - 1 );
for( int i = 1; i <= n; ++i ) printf( "%c", Ans[ 2 ] + 'a' - 1 );
for( int i = 1; i <= n; ++i ) printf( "%c", Ans[ 3 ] + 'a' - 1 );
printf( "\n" );
return 0;
}
if( !Check2() ) {
printf( "YES\n" );
for( int i = 1; i <= n; ++i )
printf( "%c%c%c", Ans[ 1 ] + 'a' - 1, Ans[ 2 ] + 'a' - 1, Ans[ 3 ] + 'a' - 1 ) ;
printf( "\n" );
return 0;
}
if( !next_permutation( Ans + 1, Ans + 4 ) ) {
printf( "NO\n" );
return 0;
}
}
return 0;
}

最新文章

  1. AFNetworking 3.0 源码解读 总结(干货)(下)
  2. angular2 service component
  3. html中frameset的详细使用方法
  4. python核心编程第六章练习6-12
  5. 【maven】之使用tomcat7-maven-plugin自动编译的问题
  6. Tamper Data
  7. node-webkit 新建实例窗口间通信问题解决办法
  8. codeforces 630D Hexagons!
  9. [译]JavaScript insertAdjacentHTML
  10. (6)s3c2440用I2C接口访问EEPROM
  11. 技嘉 gigabyte b75m d3v 主板 定时开机无效问题解决
  12. ACM HDU 1559 最大子矩阵
  13. 链接中 href=&#39;#&#39; 和 href=&#39;###&#39; 的区别
  14. django(channel)到 ubuntu
  15. 【转】CentOS 7部署ASP.NET Core应用程序
  16. 使用rem进行自适应页面布局
  17. js 迭代方法
  18. gcc的编译属性和选项
  19. f5申请并激活License
  20. 高并发TCP连接数目问题

热门文章

  1. 创建Maven Web项目时很慢解决办法
  2. CNN中feature map、卷积核、卷积核的个数、filter、channel的概念解释
  3. Wannafly挑战赛19:C. 多彩的树
  4. windows下生成zlib1.dll
  5. linux centos 安装mongoDB
  6. Eclipse快速生成do while if 等方法
  7. FluentValidation在C# WPF中的应用
  8. sql--select into,create database,create table,Constraints
  9. SQL学习(一)之简介
  10. U盘重装系统