hdoj 5641 King's Phone 【模拟】
2016-03-15 19:33
323 查看
题目链接:hdoj 5641 King’s Phone
题意:给定一个九宫解锁的序列,问是否合法。
一、至少经过4个点;
二、不能重复经过某个点;
三、不能跳过中间点。
AC代码:
题意:给定一个九宫解锁的序列,问是否合法。
一、至少经过4个点;
二、不能重复经过某个点;
三、不能跳过中间点。
AC代码:
#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <algorithm> #include <vector> #include <queue> #include <map> #include <stack> #define PI acos(-1.0) #define CLR(a, b) memset(a, (b), sizeof(a)) #define fi first #define se second #define ll o<<1 #define rr o<<1|1 using namespace std; typedef long long LL; typedef pair<int, int> pii; const int MAXN = 1e6 + 1; const int INF = 0x3f3f3f3f; const int MOD = 1e9 + 7; int Map[10][10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 2, 0, 0, 0, 4, 0, 5, -1, 0, -1, 0, 0, 0, 0, 0, 5, 0, -1, 2, 0, -1, 0, 0, 0, 5, 0, 6, -1, 0, 0, 0, -1, 0, 5, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 5, 0, -1, 0, 0, 0, -1, 4, 0, 5, 0, 0, 0, -1, 0, 8, -1, 0, 5, 0, 0, 0, 0, 0, -1, 0, -1, 5, 0, 6, 0, 0, 0, 8, 0, -1, }; bool vis[10]; int a[10]; int main() { int t; scanf("%d", &t); while(t--) { int k; scanf("%d", &k); int cnt = 0; CLR(vis, false); bool flag = true; for(int i = 1; i <= k; i++) { scanf("%d", &a[i]); if(a[i] == 0 || a[i] > 9) { flag = false; } if(vis[a[i]]) { flag = false; } else { cnt++; vis[a[i]] = true; } } if(cnt < 4) { flag = false; } if(!flag) { printf("invalid\n"); continue; } CLR(vis, false); vis[a[1]] = true; for(int i = 2; i <= k; i++) { int op = Map[a[i-1]][a[i]]; if(op > 0 && !vis[op]) { flag = false; break; } vis[a[i]] = true; } printf(flag ? "valid\n" : "invalid\n"); } return 0; }
相关文章推荐
- LinuxMySQL主从配置
- 网易2016年研发工程师编程题(1)
- Android Studio的*.9.png报错问题-Crunching Cruncher
- 使用vagrant安装linux环境
- Android依赖注入库Dagger的使用
- bzoj 2456: mode 【思维 求众数】
- A4988 步进电机加速控制算法的尝试(上)――arduino实现篇
- 如何将vector中的数据写入到txt中
- Codeforces 46D Parking Lot 枚举
- 【BZOJ1878】【codevs2307】HH的项链,莫队算法
- 最大子序列-N
- PAT 1025 反转链表 (25) 解题报告
- Gradle(ubuntu) 环境搭建
- ORACLE与.NET类型对应关系(转)
- Cisco/China Mobile的新网络架构
- bzoj 2463: [中山市选2009]谁能赢呢?【博弈】
- 《剑指offer》——删除链表中重复的结点
- 【转】java.util.ResourceBundle使用详解
- 计算字符个数
- Ubuntu 12.04中文输入法的安装