题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5641

题目类型:水题

题目思路:将点x到点y所需要跨过的点存入mark[x][y]中(无需跨过其它点存0),然后按照题目给的路径逐一判断是否可走,得出结果。

需要判断的:

1.给出的点是否在1~9之间

2.点的数量n是否在4~9之间

3.有没有重复的点

4.两点之间(x-->y)是否需要跨过第三点(z),该点(z)是否已经走过

测试样例(基本考虑了所有情况):

10
4 1 3 6 2
4 6 2 1 3
4 8 1 6 7
6 2 1 2 3 5 7
6 1 5 8 2 6 7
5 4 2 8 5 6
5 12 3 4 5 6
7 0 1 2 3 4 5 6
3 1 5 9
9 1 5 9 4 2 6 3 7 8 1.invalid
2.valid
3.valid
4.invalid
5.valid
6.invalid
7.invalid
8.invalid
9.invalid
10.valid

实现代码:

 #include <stdio.h>
#include <string.h>
#include <stdlib.h> //若从i->j 必须经过其它点,存入mark[i][j]中,否则mark[i][j]为0
int mark[][] = {
{ , , , , , , , , , },
{ , , , , , , , , , },
{ , , , , , , , , , },
{ , , , , , , , , , },
{ , , , , , , , , , },
{ , , , , , , , , , },
{ , , , , , , , , , },
{ , , , , , , , , , },
{ , , , , , , , , , },
{ , , , , , , , , , }
}; //a[]存走的路线
int a[]; //num[]统计各个点出现的次数
int num[]; //flag[]记录各个点是否被走过,0表示未走,1表示已走
int flag[]; int main()
{
int T;
int n;
int i, ans;
scanf("%d", &T);
while (T--)
{
scanf("%d", &n);
ans = ;
memset(a, , sizeof(a));
memset(num, , sizeof(num));
memset(flag, , sizeof(flag));
for (i = ; i <= n; i++)
{
scanf("%d", &a[i]);
if(a[i]< || a[i]>) //点是否在范围内
ans = ;
}
if(!ans)
{
printf("invalid\n");
continue;
}
for(i=; i<=n; i++)
num[a[i]]++;
for (i = ; i <= ; i++) {
if (num[i] > )
break;
}
if (n < || n > || i<) //点的数量是否在范围内,各点是不是最多只有一个
{
printf("invalid\n");
continue;
}
int x, y;
for (i = ; i < n; i++) //n个点会有n-1条线
{
x = a[i];
y = a[i + ];
if ( (mark[x][y] != ) && (flag[mark[x][y]] == ) )
{
ans = ; //如果x->y需要跨过点mark[x][y],而mark[x][y]未走过,则不可行
break;
}
flag[x] = ;
}
if (ans)
printf("valid\n");
else
printf("invalid\n");
}
return ;
}

hdu 5641 King's Phone的更多相关文章

  1. HDU 5641 King's Phone 模拟

    King's Phone 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5641 Description In a military parade, ...

  2. hdu 5641 King's Phone(暴力模拟题)

    Problem Description In a military parade, the King sees lots of new things, including an Andriod Pho ...

  3. HDU 5641 King's Phone【模拟】

    题意: 给定一串密码, 判断是否合法. 长度不小于4 不能重复经过任何点 不能跳过中间点,除非中间点已经经过一次. 分析: 3*3直接记录出可能出现在两点之间的点,直接模拟就好. 注意审题,别漏了判断 ...

  4. hdu 5641 BestCoder Round #75

    King's Phone  Accepts: 310  Submissions: 2980  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: ...

  5. HDU 5642 King's Order dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5642 King's Order  Accepts: 381  Submissions: 1361   ...

  6. HDU 5644 King's Pilots 费用流

    King's Pilots 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5644 Description The military parade w ...

  7. HDU 5643 King's Game 打表

    King's Game 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5643 Description In order to remember hi ...

  8. HDU 5642 King's Order 动态规划

    King's Order 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5642 Description After the king's speec ...

  9. HDU 5640 King's Cake GCD

    King's Cake 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5640 Description It is the king's birthd ...

随机推荐

  1. Linux中读写权限

    learn the auth of Linux.   Generally, r-x w: write , modify and delete  -2 r: read   -4 x: execute   ...

  2. HTML元素坐标定位,这些知识点得掌握

    文档坐标和视口坐标 视口坐标是相对于窗口的坐标,而文档坐标是相对于整个文档而言.例如,在文档坐标中如果一个元素的相对于文档的Y坐标是200px,并且用户已经把浏览器向下滚动了75px,那么视口坐标中元 ...

  3. ASP.NET MVC对WebAPI接口操作(添加,更新和删除)

    昨天<怎样操作WebAPI接口(显示数据)>http://www.cnblogs.com/insus/p/5670401.html 既有使用jQuery,也有使作HttpClient来从数 ...

  4. processModel与ASP.NET进程模型

    配置 Microsoft Internet 信息服务 (IIS) Web 服务器上的 ASP.NET 进程模型设置.其作用是配置IIS或IIS中的应用程序池(IIS7及以后版本)的安全性,性能,健壮性 ...

  5. httpHandlers与Http处理程序

    ASP.NET HTTP 处理程序是响应对 ASP.NET Web 应用程序的请求而运行的过程(通常称为"终结点").最常用的处理程序是处理 .aspx 文件的 ASP.NET 页 ...

  6. HTML5填充颜色的fillStyle测试

    效果:http://hovertree.com/texiao/html5/canvas/1/ 代码: <html> <head> <meta http-equiv=&qu ...

  7. .net源码分析 - ConcurrentDictionary<TKey, TValue>

    List源码分析 Dictionary源码分析 ConcurrentDictionary源码分析 继上篇Dictionary源码分析,上篇讲过的在这里不会再重复 ConcurrentDictionar ...

  8. (转)内置系统账户:Local system/Network service/Local Service 区别

    最近会转载一些 MSSQL 基础相关的文章. 参考文献: http://www.cnblogs.com/xianspace/archive/2009/04/05/1429835.html 前言 今天在 ...

  9. Git合并分支操作

    1. 添加自己的文件 git add .; 2. 缓存自己的文件 git stash; 3. 查看状态 git status; 4. 获取别的分支 git pull origin master(分支名 ...

  10. thinkphp怎么设置输入网址直接进入首页

    1.设置apache服务器的时候,文件的位置要写包含index.php的那个主文件夹. 2.apache和thinkphp默认index.html是作为网站的默认首页,所以在浏览器端可以直接输入网址进 ...