zoukankan      html  css  js  c++  java
  • CodeForces 689A -Mike and Cellphone

    题目链接: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
    ":"YES
    ");
    }
    int main()
    {
     while(cin>>n)
     {
      scanf("%s",str);
      out();
     }
     return 0;
    }
    View Code
     
  • 相关阅读:
    HTML5--Video
    线性表简述
    TortoiseSVN使用简介(转)
    JAVA EE(简述)
    WebService
    Java从零开始学四十七(注解简述)
    Java从零开始学四十六(Junit)
    二维数组---模拟斗地主
    Java从零开始学四十五(Socket编程基础)
    Java从零开始学四十四(多线程)
  • 原文地址:https://www.cnblogs.com/www-cnxcy-com/p/5664734.html
Copyright © 2011-2022 走看看