UVa 11110 - Equidivisions
题目大意:给一个n*n的矩阵,其中放置n个数字,判断四连通的相同数字的个数是否等于n。
Flood fill,本来没什么,用dfs判断一下就可以了,可是用scanf读取输入时TLE了,然后看到别人说要用gets()读一整行,因为每行不一定是n对数,好吧,怎么感觉有点坑呢...把字符串解析成数字有没有什么好办法?...
#include <cstdio>
#include <cctype>
#include <cstring>
#define MAXN 110 int mat[MAXN][MAXN];
bool vis[MAXN][MAXN];
int n, cnt;
const int dir[][] = {{-, }, {, -}, {, }, {, }}; void dfs(int x, int y)
{
vis[x][y] = ;
cnt++;
for (int i = ; i < ; i++)
{
int dx = x + dir[i][];
int dy = y + dir[i][];
if (dx >= && dx < n && dy >= && dy < n && mat[dx][dy] == mat[x][y] && !vis[dx][dy])
dfs(dx, dy);
}
} int main()
{
#ifdef LOCAL
freopen("in", "r", stdin);
#endif
int x, y;
char str[];
while (scanf("%d", &n) && n)
{
getchar();
memset(mat, , sizeof(mat));
for (int i = ; i < n; i++)
{
gets(str);
int len = strlen(str);
for (int j = ; j < len; )
{
while (j < len && !isdigit(str[j])) j++;
if (j == len) break;
x = str[j] - '';
j++;
while (j < len && isdigit(str[j]))
{
x = x * + str[j] - '';
j++;
}
while (j < len && !isdigit(str[j])) j++;
y = str[j] - '';
j++;
while (j < len && isdigit(str[j]))
{
y = y * + str[j] - '';
j++;
}
mat[x-][y-] = i;
}
}
memset(vis, , sizeof(vis));
bool ok = true;
for (int i = ; i < n; i++)
for (int j = ; j < n; j++)
if (!vis[i][j])
{
cnt = ;
dfs(i, j);
if (cnt != n)
{
ok = false;
goto s;
}
}
s: if (ok) printf("good\n");
else printf("wrong\n");
}
return ;
}
UVa 11110 - Equidivisions的更多相关文章
- uva 1354 Mobile Computing ——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5
- UVA 10564 Paths through the Hourglass[DP 打印]
UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...
- UVA 11404 Palindromic Subsequence[DP LCS 打印]
UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...
- UVA&&POJ离散概率与数学期望入门练习[4]
POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...
- UVA计数方法练习[3]
UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...
- UVA数学入门训练Round1[6]
UVA - 11388 GCD LCM 题意:输入g和l,找到a和b,gcd(a,b)=g,lacm(a,b)=l,a<b且a最小 g不能整除l时无解,否则一定g,l最小 #include &l ...
- UVA - 1625 Color Length[序列DP 代价计算技巧]
UVA - 1625 Color Length 白书 很明显f[i][j]表示第一个取到i第二个取到j的代价 问题在于代价的计算,并不知道每种颜色的开始和结束 和模拟赛那道环形DP很想,计算这 ...
- UVA - 10375 Choose and divide[唯一分解定理]
UVA - 10375 Choose and divide Choose and divide Time Limit: 1000MS Memory Limit: 65536K Total Subm ...
- UVA - 11584 Partitioning by Palindromes[序列DP]
UVA - 11584 Partitioning by Palindromes We say a sequence of char- acters is a palindrome if it is t ...
随机推荐
- Codeforces 691A Fashion in Berland
水题. #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #includ ...
- BD string 百度之星初赛的题目 数学
http://acm.hdu.edu.cn/showproblem.php?pid=5694 可以说这道题目挺考验思维含量的吧 首先,这个和数位dp是差不多的方法,计算cal(l)-cal(l-1): ...
- FusionCharts导出图表常见问题(FAQ)汇总---FusionCharts常见问题大全
在前面几篇文章中,我们介绍了FusionCharts生成Flash图表常见问题FAQ以及使用中的一些常见报错及调试/解决方法.本文继续介绍FusionCharts导出图表时的一些常见问题(FAQ). ...
- java.net.URLEncode编码 与 URLDecode解码问题
1.java内部加密和解密 String mytext = java.net.URLEncoder.encode("中国", "utf-8"); String ...
- VIEWCONTROLLER的启动流程
转载自:http://sunnyyoung.net/post/ios/2015-04-22-viewcontrollerde-qi-dong-liu-cheng-yu-jie-xi VIEWCONTR ...
- 【Android Demo】通过WebService获取今日天气情况--转
因为本身是在搞.NET方面的东东,现在在学习Android,所以想实现Android通过WebService接口来获取数据,网上很多例子还有有问题的.参考:Android 通过WebService进行 ...
- 文件I/O的操作实例
1_open.c: #include <sys/types.h> #include <stdio.h> #include <sys/stat.h> #include ...
- Android网络开发之OkHttp--基本用法POST
1.OkHttp框架使用了OkIo框架,不要忘记下OkIo.jar 2.通过POST访问网络,和通过GET访问网络基本相同,多了设置请求参数的过程.主要分为五步: (1).声明并实例化一个OkHttp ...
- RHEL7 单独安装图形 X11
RHEL7 默认是最小化安装(Minimal Install),没有图形界面, 我们应该选择Server with GUI.若已错过此步骤,我们采用以下方式补充安装GUI界面.
- 使用PHPmailer 发送邮件,使用QQ smtp服务器
<meta charset="utf-8"> <?php include("class.phpmailer.php"); include(&q ...