Code Forces 645A Amity Assessment
A. Amity Assessment
time limit per test2 seconds
memory limit per test256 megabytes
inputstandard input
outputstandard output
Bessie the cow and her best friend Elsie each received a sliding puzzle on Pi Day. Their puzzles consist of a 2 × 2 grid and three tiles labeled ‘A’, ‘B’, and ‘C’. The three tiles sit on top of the grid, leaving one grid cell empty. To make a move, Bessie or Elsie can slide a tile adjacent to the empty cell into the empty cell as shown below:
In order to determine if they are truly Best Friends For Life (BFFLs), Bessie and Elsie would like to know if there exists a sequence of moves that takes their puzzles to the same configuration (moves can be performed in both puzzles). Two puzzles are considered to be in the same configuration if each tile is on top of the same grid cell in both puzzles. Since the tiles are labeled with letters, rotations and reflections are not allowed.
Input
The first two lines of the input consist of a 2 × 2 grid describing the initial configuration of Bessie’s puzzle. The next two lines contain a 2 × 2 grid describing the initial configuration of Elsie’s puzzle. The positions of the tiles are labeled ‘A’, ‘B’, and ‘C’, while the empty cell is labeled ‘X’. It’s guaranteed that both puzzles contain exactly one tile with each letter and exactly one empty position.
Output
Output “YES”(without quotes) if the puzzles can reach the same configuration (and Bessie and Elsie are truly BFFLs). Otherwise, print “NO” (without quotes).
Examples
input
AB
XC
XB
AC
output
YES
input
AB
XC
AC
BX
output
NO
我直接暴力来的
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <math.h>
#include <stdio.h>
#include <queue>
#include <map>
using namespace std;
int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int vis[5000];
struct Node
{
int a[2][2];
int s;
int posx;
int posy;
Node(){};
Node(int a[2][2],int s,int posx,int posy)
{
this->s=s;
this->posx=posx;
this->posy=posy;
memcpy(this->a,a,sizeof(this->a));
}
};
Node st,ed;
map<char,int>m;
int kt(int a[2][2])
{
int num=0;
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
num=num*10+a[i][j];
return num;
}
int bfs(Node st)
{
queue<Node>q;
q.push(st);
while(!q.empty())
{
Node term=q.front();
q.pop();
if(term.s==ed.s)
{
return 1;
}
for(int i=0;i<4;i++)
{
int xx=term.posx+dir[i][0];
int yy=term.posy+dir[i][1];
if(xx<0||xx>=2||yy<0||yy>=2)
continue;
swap(term.a[term.posx][term.posy],term.a[xx][yy]);
int state=kt(term.a);
if(vis[state])
{
swap(term.a[term.posx][term.posy],term.a[xx][yy]);
continue;
}
vis[state]=1;
q.push(Node(term.a,state,xx,yy));
swap(term.a[term.posx][term.posy],term.a[xx][yy]);
}
}
return 0;
}
int main()
{
m['A']=1;m['B']=2;m['C']=3;m['X']=0;
char b1[2][2];
memset(vis,0,sizeof(vis));
for(int i=0;i<=1;i++)
scanf("%s",b1[i]);
for(int i=0;i<=1;i++)
for(int j=0;j<=1;j++)
{
st.a[i][j]=m[b1[i][j]];
if(b1[i][j]=='X')
st.posx=i,st.posy=j;
}
st.s=kt(st.a);
for(int i=0;i<=1;i++)
scanf("%s",b1[i]);
for(int i=0;i<=1;i++)
for(int j=0;j<=1;j++)
{
ed.a[i][j]=m[b1[i][j]];
if(b1[i][j]=='X')
ed.posx=i,ed.posy=j;
}
ed.s=kt(ed.a);
if(bfs(st))
printf("YES\n");
else
printf("NO\n");
return 0;
}
Code Forces 645A Amity Assessment的更多相关文章
- CodeForces 645A Amity Assessment
简单模拟. #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #incl ...
- Codeforces 645A Amity Assessment【八数码】
题目链接: http://codeforces.com/problemset/problem/645/A 题意: 2*2的八数码问题 分析: 这题n为2,不需要搜索,直接判断字母排列顺序就好了. 注意 ...
- 思维题--code forces round# 551 div.2
思维题--code forces round# 551 div.2 题目 D. Serval and Rooted Tree time limit per test 2 seconds memory ...
- CROC 2016 - Elimination Round (Rated Unofficial Edition) A. Amity Assessment 水题
A. Amity Assessment 题目连接: http://www.codeforces.com/contest/655/problem/A Description Bessie the cow ...
- codeforces 655A A. Amity Assessment(水题)
题目链接: A. Amity Assessment time limit per test 2 seconds memory limit per test 256 megabytes input st ...
- Code Forces 796C Bank Hacking(贪心)
Code Forces 796C Bank Hacking 题目大意 给一棵树,有\(n\)个点,\(n-1\)条边,现在让你决策出一个点作为起点,去掉这个点,然后这个点连接的所有点权值+=1,然后再 ...
- Code Forces 833 A The Meaningless Game(思维,数学)
Code Forces 833 A The Meaningless Game 题目大意 有两个人玩游戏,每轮给出一个自然数k,赢得人乘k^2,输得人乘k,给出最后两个人的分数,问两个人能否达到这个分数 ...
- Code Forces 543A Writing Code
题目描述 Programmers working on a large project have just received a task to write exactly mm lines of c ...
- code forces 383 Arpa's loud Owf and Mehrdad's evil plan(有向图最小环)
Arpa's loud Owf and Mehrdad's evil plan time limit per test 1 second memory limit per test 256 megab ...
随机推荐
- 宏里面的(void)0
在<c标准库>实现assert.h中有一个语句: #define assert(test) ((test)?(void)0 : _Assert(__FILE__":"_ ...
- 云中的机器学习:FPGA 上的深度神经网络
人工智能正在经历一场变革,这要得益于机器学习的快速进步.在机器学习领域,人们正对一类名为“深度学习”算法产生浓厚的兴趣,因为这类算法具有出色的大数据集性能.在深度学习中,机器可以在监督或不受监督的方式 ...
- Delphi映射模式实验
unit FrmMappingMode; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Contro ...
- SimpleDateFormat线程不安全及解决的方法
一. 为什么SimpleDateFormat不是线程安全的? Java源代码例如以下: /** * Date formats are not synchronized. * It is recomme ...
- HBase源代码分析之HRegionServer上MemStore的flush处理流程(二)
继上篇文章<HBase源代码分析之HRegionServer上MemStore的flush处理流程(一)>遗留的问题之后,本文我们接着研究HRegionServer上MemStore的fl ...
- Machine Learning—The k-means clustering algorithm
印象笔记同步分享:Machine Learning-The k-means clustering algorithm
- HTTP协议 - 协议格式
HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展.目前在WWW中使用的是HTTP/1.0 ...
- [转] C#与Java的比较
[转] C#与Java的比较 转自:C#与Java的比较 2015-06-26 目录 一.C#.C++和Java二.语言规范的比较 2.1.简单数据类型 2.2.常量 2.3.公用类的入口点 ...
- CentOS6.4下Docker应用环境的部署配置
http://blog.chinaunix.net/uid-619485-id-4973941.html *********************************************** ...
- JAVA数据库连接池的革命 -- 从BoneCP到HikariCP
从BoneCP到HikariCP 今天笔者本想更新一下项目中使用到的BoneCP版本的.却无意发现jolbox网站打不开了.起初以为是被墙掉了,经过一番查找,居然在BoneCP的Github站看到了如 ...