题意:给定一个手机键盘数字九宫格,然后让你判断某种操作是不是唯一的,也就是说是不是可以通过平移也能实现。

析:我的想法是那就平移一下,看看能实现,就四种平移,上,下,左,右,上是-3,要注意0变成8,如果有数字变成小于等于0了,那么就是不可以,同理,下是+3,8可以变成0,其他的也是这样,

注意左右平移是147,和369,是不能平移,然后就AC了。再简化一下就是如果有123,就不能上移,如果有79就不能下移,如果有147就不能左移,如果有369就不能右移,如果有0就不能下左右移。

代码如下:

#include <iostream>
#include <cstdio> using namespace std;
const int maxn = 9 + 5;
int a[maxn];
int b[maxn];
char s[maxn]; int main(){
int n;
while(scanf("%d", &n) == 1 && n){
scanf("%s", s);
for(int i = 0; i < n; ++i) a[i] = s[i] - '0';
bool ok = false;
for(int i = 0; i < n; ++i)//下
if(a[i] && a[i] != 8) b[i] = a[i] + 3;
else if(a[i] == 8) b[i] = 0;
else b[i] = 10;
int i;
for(i = 0; i < n; ++i) if(b[i] > 9) break;
if(i == n) ok = true;
for(i = 0; i < n; ++i)//上
if(a[i]) b[i] = a[i] - 3;
else b[i] = 8;
for(i = 0; i < n; ++i) if(b[i] <= 0) break;
if(i == n) ok = true;
for(i = 0; i < n; ++i)//右
if(3 == a[i] || 6 == a[i] || 9 == a[i]) b[i] = 10;
else if(a[i]) b[i] = a[i] + 1;
else b[i] = 10;
for(i = 0; i < n; ++i) if(b[i] > 9) break;
if(i == n) ok = true;
for(i = 0; i < n; ++i)//左
if(a[i] == 1 || a[i] == 4 || a[i] == 7) b[i] = -10;
else if(a[i]) b[i] = a[i] - 1;
else b[i] = -10;
for(i = 0; i < n; ++i) if(b[i] <= 0) break;
if(i == n) ok = true;
if(!ok) puts("YES");
else puts("NO");
}
return 0;
}

第二种:

#include <iostream>
#include <cstdio> using namespace std;
const int maxn = 9 + 5;
int a[maxn];
int b[maxn];
char s[maxn]; int main(){
int n;
while(scanf("%d", &n) == 1 && n){
scanf("%s", s);
int l = 0, u = 0, r = 0, d = 0;
for(int i = 0; i < n; ++i){
if(s[i] == '0') l = r = d = 1;
if(s[i] == '1' || s[i] == '4' || s[i] == '7') l = 1;
if(s[i] == '3' || s[i] == '6' || s[i] == '9') r = 1;
if(s[i] == '1' || s[i] == '2' || s[i] == '3') u = 1;
if(s[i] == '7' || s[i] == '9') d = 1;
}
if(u && d && l && r) puts("YES");
else puts("NO");
}
return 0;
}

CoderForces 689A Mike and Cellphone (水题)的更多相关文章

  1. codeforces 689A A. Mike and Cellphone(水题)

    题目链接: A. Mike and Cellphone time limit per test 1 second memory limit per test 256 megabytes input s ...

  2. Codeforces Round #361 (Div. 2) A. Mike and Cellphone 水题

    A. Mike and Cellphone 题目连接: http://www.codeforces.com/contest/689/problem/A Description While swimmi ...

  3. CodeForces 689A Mike and Cellphone (模拟+水题)

    Mike and Cellphone 题目链接: http://acm.hust.edu.cn/vjudge/contest/121333#problem/E Description While sw ...

  4. CodeForces 689A -Mike and Cellphone

    题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=412142 题目大意: 给定一个0-9数字键盘,随后输入一个操 ...

  5. HDOJ 2317. Nasty Hacks 模拟水题

    Nasty Hacks Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  6. ACM :漫漫上学路 -DP -水题

    CSU 1772 漫漫上学路 Time Limit: 1000MS   Memory Limit: 131072KB   64bit IO Format: %lld & %llu Submit ...

  7. ytu 1050:写一个函数,使给定的一个二维数组(3×3)转置,即行列互换(水题)

    1050: 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 154  Solved: 112[ ...

  8. [poj2247] Humble Numbers (DP水题)

    DP 水题 Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The se ...

  9. gdutcode 1195: 相信我这是水题 GDUT中有个风云人物pigofzhou,是冰点奇迹队的主代码手,

    1195: 相信我这是水题 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 821  Solved: 219 Description GDUT中有个风云人 ...

随机推荐

  1. vs2005新建项目中没有ASP.NET WEB应用程序的解决方法

    在vs2003的年代,我们可以在项目模板中选择创建"asp.net web应用程序",可是到vs2005中,就变成了创建网站,原有的创建"asp.net web应用程序& ...

  2. TVS 选型

    TVS 选型 主要用于 IO 保护 TVS 的电压不要小于正常工作的电压,不然会影响正常工作. ESD 的电压很高,但是时间很短. TVS 有节电容,用于高速线路时要注意. 有双向的,也有单向的,还有 ...

  3. java的static研究

    (1)static关键字:可以用于修饰属性.方法和类. 1,属性:无论一个类生成了多少个对象,所有这些对象共同使用唯一的一份静态的成员变量(不能修饰临时变量 2,方法:static修饰的方法叫做静态, ...

  4. PHP安全性漫谈

    最近刚做完两个PHP的网站项目,客户虽然没有安全性的相关需求,但是自己不能放过对自己的要求,何况对以后做电子商务的项目相当有帮助,呵呵,早准备早超生,经过查看PHP 帮助和相关资料~~~~       ...

  5. LINQ to SQL 建立实体类 (转)

    http://www.cnblogs.com/DebugLZQ/archive/2012/11/14/2770449.html 使用LINQ to SQL时,需要首先建立用于映射数据库对象的模型,也就 ...

  6. JSONHelp json解析成类,类解析成string

    using System; using System.Collections.Generic; using System.IO; using System.Runtime.Serialization. ...

  7. 【monkeyrunner】monkeyrunner 的主要API和实例

    MonkeyRunner简介 monkeyrunner工具提供了编写控制Android设备或仿真器从Android的代码之外程序的API.随着monkeyrunner,您可以编写安装一个Android ...

  8. ASP.NET 迭代控件获得行号

    如何获取Repeater的当前行号,其实Repeater自身就带有这个获取当前行号的属性,而无需程序员绑定这个行号.到底要怎么实现呢?其实使用Repeater中的 Container.ItemInde ...

  9. 【升级至sql 2012】sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611。请将该数据库升级为最新版本。)

    sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611.请将该数据库升级为最新版本.) 最近工作中有一个sqlserver2005版本的mdf文件,还没有log文件 ...

  10. [java]经验集

    Calendar c = Calendar.getInstance(); c.set(1999,12,21); SimpleDateFormat sdf = new SimpleDateFormat( ...