UVa-232-纵横字谜的答案
这一题的话,输出的时候,我们要按照3位输出,不能按照两位,因为是10*10的网格,所以就是100位,不管有没有100的起始格,它都是按照3位进行输出的,从题上的输出可以看到,不然的话,就会PE。
然后我们对于它的起始网格的处理,我们可以设置一个对应的网格,然后判断填数就可以了,然后我们判断的时候肯定要否定*号,所以就在判断语句之内加上num [i] [j] =-1的赋值就可以了。然后我们再对于它是否是起始格进行赋值,因为如果是-1的话, 我们也是要输出这个字母的,对于是零的格子,我们就不再进行输出了。
此外加上一个vis数组,来判断是否输出过就行了,对于总想输出来说的话,题目中实际上还是按照起始格的顺序进行的,所以我们纵向输出的时候还是按照从上往下横着扫,但是每扫到一个起始格,我们就纵向进行判断输出。
以及纵向输出之前,vis清零还是十分关键的。
#include <stdio.h>
#include <string.h>
int num[11][11];
char puzz[11][11];
int vis[11][11];
int main()
{
int r,c;
int cnt,ord=1;
while (scanf("%d",&r)!=EOF&&r!=0) {
scanf("%d",&c);
cnt=1;
memset(num,0,sizeof(num));
memset(vis,0,sizeof(vis));
for (int i=0;i<r;i++)
scanf("%s",puzz[i]);
for (int i=0;i<r;i++) {
for (int j=0;j<c;j++) {
if (puzz[i][j]!='*') {
num[i][j]=-1;//表明它是字母
if (i==0||j==0) {
num[i][j]=cnt++;
continue;
}
if (puzz[i-1][j]=='*'||puzz[i][j-1]=='*')
num[i][j]=cnt++;
}
}
}
if (ord!=1) printf("\n");
printf("puzzle #%d:\nAcross\n",ord++);
for (int i=0;i<r;i++) {
for (int j=0;j<c;j++) {
if (num[i][j]>0&&!vis[i][j]) {
vis[i][j]=1;
printf("%3d.",num[i][j]);
int k=j;
while (num[i][k]!=0) {
printf("%c",puzz[i][k]);
vis[i][k]=1;
k++;
}
printf("\n");
}
}
}
memset(vis,0,sizeof(vis));
printf("Down\n");
for (int i=0;i<r;i++) {
for (int j=0;j<c;j++) {
if (num[i][j]>0&&!vis[i][j]) {
vis[i][j]=1;
printf("%3d.",num[i][j]);
int k=i;
while (num[k][j]!=0) {
printf("%c",puzz[k][j]);
vis[k][j]=1;
k++;
}
printf("\n");
}
}
}
}
return 0;
}
// for (int i=0;i<r;i++) {
// for (int j=0;j<c;j++) {
// printf("%3d",num[i][j]);
// }
// printf("\n");
// }
UVa-232-纵横字谜的答案的更多相关文章
- UVa 714 Copying Books - 二分答案
求使最大值最小,可以想到二分答案. 然后再根据题目意思乱搞一下,按要求输出斜杠(这道题觉得就这一个地方难). Code /** * UVa * Problem#12627 * Accepted * T ...
- Uva 232 一个换行WA 了四次
由于UVA OJ上没有Wrong anwser,搞的多花了好长时间去测试程序,之前一直以为改OJ有WA,后来网上一搜才知道没有WA,哎哎浪费了好长时间.此博客用来记录自己的粗心大意. 链接地址:htt ...
- UVA 232 Corssword Answer
题意:输入m*n大小的字符串(里面有*,*为黑格,其他为白格),然后对它编号,编号规则为从左到右,从上往下,且左边或上面没有白格(可能是黑格或越界),如下图: 注意: ①除第一次输出答案外,其余每次输 ...
- UVA 12097 Pie(二分答案)
题目链接: 这道题虽然不是一道典型的二分答案题,但同样也可以用二分答案来做. 来二分面积为$area$的派,然后看看条件是否矛盾. 与其矛盾的便是$f+1$个人是否每个人都会有. 一个半径为$r$的派 ...
- UVA 12124 Assemble(二分答案)
题目链接:https://vjudge.net/problem/UVA-12124 垃圾vjudge毁我青春!! 首先这道题是解决“最小值最大”的问题,所以要二分答案. 在这里我们二分$quality ...
- UVa 232 Crossword Answers
Crossword Answers A crossword puzzle consists of a rectangular grid of black and white squares and ...
- Crossword Answers UVA - 232
题目大意 感觉挺水的一道题.找出左面右面不存在或者是黑色的格子的白各,然后编号输出一横向单词和竖向单词(具体看原题) 解析 ①找出各个格子的编号 ②对每个节点搜索一下 ③输出的时候注意最后一个数据后面 ...
- 【习题 3-6 UVA - 232】Crossword Answers
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 模拟题.注意场宽为3 [代码] #include <bits/stdc++.h> using namespace std ...
- 码书:编码与解码的战争 PDF 下载
码书:编码与解码的战争 PDF 下载 下载地址:https://pan.baidu.com/s/14Y_krHh-unOv4g2KYFFDgQ 如需分享码:[打开微信]->[扫描右侧二维码]-& ...
随机推荐
- hadoop 2.5.1单机安装部署伪集群
环境:ubuntu 14.04 server 64版本 hadoop 2.5.1 jdk 1.6 部署的步骤主要参考了http://blog.csdn.net/greensurfer/article/ ...
- Matlab图像处理相关
相关函数: 读取:imread() %参数为文件名(路径)或url,格式等 写入:imwrite() %参数为写入数据矩阵,写入文件名(路径),格式等 显示:imshow() %显示由输入决定,属性自 ...
- django_view操作数据库
1 create def add_area(request): area = Area.objects.create(name='commom',description='a commom area' ...
- vue初级学习--使用 vue-resource 请求数据
一.导语 我发现好像我最近几次写文,都是在7号,很恰巧啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...
- [未读]编写可测试的JavaScript代码
- [已读]悟透JavaScript
这本书出的特别早,就第一部分内容还行,第一次看得时候觉得蛮有意思,讲禅的方式来讲javascript,作者造了一个"甘露模型"来实现继承,不过今天整理的时候,发现那些笔记都没多少可 ...
- 顾问Advisor Aspectj注解
顾问Advisor 通知 advice PointcutAdvisor 一个接口 是顾问的一种. . 任意单个字符 + 重复1到多次 * 重复0到多次 NameMetchMethodPointc ...
- gin 打linux环境包问题解决
打window包直接go build一下,完事, 但是,打linux包出现如下错误 ..\github.com\mattn\go-isatty\isatty_linux.go:7:8: cannot ...
- Java编程基础-面向对象(中)
本章承接Java编程基础-面向对象(上)一文. 一.static关键字 在java中,定义了一个static关键字,它用于修饰类的成员,如成员变量.成员方法以及代码块等,被static修饰的成员具备一 ...
- 国内的Jquery CDN免费服务
Jquery是个非常流行的JS前端框架,在很多网站都能看到它的身影.很多网站都喜欢采用一些Jquery CDN加速服务,这样网站加载jquery会更快.之前火端网络的一些网站都是使用Google的jq ...