POJ 3561 Pseudographical recognizer
【题意简述】:矩阵中除了‘.’仅仅能出现一种符号。是这些之中的一个‘‑’, ‘|’, ‘\’, or ‘/’,并且就是当除了‘.’之外还仅仅有一种符号时。这个符号还必须连成一条直线,否则就是错的,这个时候就能够输出CORRECT。否则当有两种以上符号的时候。就是错误。
还有就是当仅仅有‘.’时,也是不正确的。
【分析】:模拟过程,将整个思路想清晰。
本代码參考:http://www.cnblogs.com/gongling/archive/2012/08/05/2623676.html。
// 208K 125ms
#include<cstdio>
#include<iostream>
using namespace std;
#define MAX_LEN 101
#define is_valid(x, y) ((x)>=0 && (x)<N && (y)>=0 && (y)<M)
int N, M;
char image[MAX_LEN][MAX_LEN];
int visited[MAX_LEN][MAX_LEN];
int flag; void mark(int i, int j, int dx, int dy, char ch)
{
while(is_valid(i+dx, j+dy) && image[i+dx][j+dy]==ch)
{
visited[i+dx][j+dy] = 1;
i += dx;
j += dy;
}
} void solve()
{
int i, j;
char ch;
for(i=0; i<N; i++)
{
for(j=0; j<M; j++)
{
ch = image[i][j];
if(ch!='.' && !visited[i][j])
{
visited[i][j] = 1;
switch(ch)
{
case '-':
++flag;
mark(i, j, 0, 1, ch);
break;
case '|':
++flag;
mark(i, j, 1, 0, ch);
break;
case '\\':
++flag;
mark(i, j, 1, 1, ch);
break;
case '/':
++flag;
mark(i, j, 1, -1, ch);
break;
}
}
}
}
} int main()
{
int i, tests;
scanf("%d", &tests);
while(tests--)
{
scanf("%d %d", &N, &M);
for(i=0; i<N; i++)
scanf("%s", image[i]);
memset(visited, 0, sizeof(visited));
flag = 0;
solve();
if(flag == 1)
printf("CORRECT\n");
else
printf("INCORRECT\n");
}
}
POJ 3561 Pseudographical recognizer的更多相关文章
- 字符串专题:KMP POJ 3561
http://poj.org/problem?id=3461 KMP这里讲的不错next的求法值得借鉴 http://blog.sina.com.cn/s/blog_70bab9230101g0qv. ...
- POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理
Halloween treats Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7644 Accepted: 2798 ...
- POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理
Find a multiple Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7192 Accepted: 3138 ...
- POJ 2965. The Pilots Brothers' refrigerator 枚举or爆搜or分治
The Pilots Brothers' refrigerator Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22286 ...
- POJ 1753. Flip Game 枚举or爆搜+位压缩,或者高斯消元法
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 37427 Accepted: 16288 Descr ...
- POJ 3254. Corn Fields 状态压缩DP (入门级)
Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9806 Accepted: 5185 Descr ...
- POJ 2739. Sum of Consecutive Prime Numbers
Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20050 ...
- POJ 2255. Tree Recovery
Tree Recovery Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11939 Accepted: 7493 De ...
- POJ 2752 Seek the Name, Seek the Fame [kmp]
Seek the Name, Seek the Fame Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17898 Ac ...
随机推荐
- STL优先队列——踩坑日记
priority_queue 可以定义STL中的优先队列,但是优先队列在应用于自己定义的类型时需要重载<运算符,或者通过仿函数来定义比较方法,在定义比较方法的过程中,比较大的坑是STL中对于参数 ...
- (寒假GYM开黑)2018-2019 ACM-ICPC Brazil Subregional Programming Contest
layout: post title: 2018-2019 ACM-ICPC Brazil Subregional Programming Contest author: "luowenta ...
- HDOJ 2582 f(n)
Discription This time I need you to calculate the f(n) . (3<=n<=1000000) f(n)= Gcd(3)+Gcd(4)+… ...
- Problem I: 零起点学算法30——输出四位完全平方数
#include<stdio.h> int main() { int a,b,c,d,s,i; ;i<;i++){ s=i*i; a=s/; b=s%/; c=s%/; d=s%; ...
- React Native 让组件做到局部刷新
利用RN的状态机机制,我们可以通过this.setState({optional:...})来控制界面的刷新,但是一定会触发render方法,那如何保证不调用render方法从而做到界面的局部刷新呢? ...
- 理解Android绘制视图的方式
在创建自定义ViewGroup前,读者首先需要理解Android绘制视图的方式.我不会涉及过多细节,但是需要读者理解Android开发文档(见3.5节)中的一段话,这段话解释如何绘制一个布局.内容如下 ...
- 手把手教你使用FineUI开发一个b/s结构的取送货管理信息系统系列博文索引
近阶段接到一些b/s类型的软件项目,但是团队成员之前大部分没有这方面的开发经验,于是自己选择了一套目前网上比较容易上手的开发框架(FineUI),计划录制一套视频讲座,来讲解如何利用FineUI快速开 ...
- perspective 的笔记
以前看到别人做的banner图,3d变化,很羡慕啊,一直不知道怎么做,直到看到了这个样式perspective,然后就知道怎么实现了 一个简单的例子,扫起 demo下在地址 http://fil ...
- mac 切换默认python版本
https://www.zhihu.com/question/30941329 首先终端的“python”命令会执行/usr/local/bin下的“python”链接,链接相当于win下的快捷方式, ...
- ylbtech-LanguageSamples-CollectionClasses(集合类)
ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-CollectionClasses(集合类) 1.A,示例(Sample) 返回顶部 “ ...