码迷,mamicode.com
首页 > 其他好文 > 详细

CodeForces 689A -Mike and Cellphone

时间:2016-07-12 21:27:33      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:

题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=412142

题目大意: 给定一个0-9数字键盘,随后输入一个操作序列,即按键手势,问该操作序列在键盘上形成的手势是否是唯一的,是YES,否NO。手势可往上下左右平移。

解题思路:

由于数字很少,可以把数字的位置表示成坐标,按这个手势的顺序匹配其它的数字(即把这些数字统一上或下或左或右平移),看匹配后的数字还在不在这个键盘上;

技术分享
#include <cstdio>
#include <iostream>
using namespace std;
int n,coordinate[10][2]={2,1,1,4,2,4,3,4,1,3,2,3,3,3,1,2,2,2,3,2};
int dir[4][2]={-1,0,1,0,0,-1,0,1};
char str[10];
int  find(int d)
{
 for(int i=0;i<n;i++)
  {
  int x=str[i]-0;
  if(x==0&&(d==0||d==1||d==2)) return 0;
  if(coordinate[x][0]+dir[d][0]<1||coordinate[x][0]+dir[d][0]>3||(x!=8&&coordinate[x][1]+dir[d][1]<2)||coordinate[x][1]+dir[d][1]>4)
        return 0;
  }
  return 1;
}
void out()
{
  int flag=0;
  for(int i=0;i<4;i++)
    if(find(i)) {flag=1;if(flag) break;}
  printf(flag?"NO\n":"YES\n");
}
int main()
{
 while(cin>>n)
 {
  scanf("%s",str);
  out();
 }
 return 0;
}
View Code

 

 

CodeForces 689A -Mike and Cellphone

标签:

原文地址:http://www.cnblogs.com/www-cnxcy-com/p/5664734.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!