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 如需分享码:[打开微信]->[扫描右侧二维码]-& ...
随机推荐
- 00 | QPS
每秒查询率 QPS Query Per Second 某个查询服务器 在 规定时间内 处理了多少流量 对应的fetches/sec,即每秒响应请求数,就是最大吞吐量 原理:每天80%的访问集中在20% ...
- Spring Boot后端+Vue前端+微信小程序,完整的开源解决方案!
项目简介 一个小商场系统,包括: 后端:Spring Boot 管理员前端:Vue 用户前端:微信小程序 功能介绍 1.小商城 首页 专题列表.专题详情 分类列表.分类详情 品牌列表.品牌详情 新品首 ...
- Python-2-序列及通用序列操作
序列包括字符串,列表,元祖,序列中的每个元素都有编号,其中只有元祖不能修改 通用序列操作包括索引. 切片. 相加. 相乘和成员资格检查 索引 >>> greeting = ' ...
- STP-4-每VLAN生成树和Trunk上的STP
如果在有冗余链路且有多个VLAN的交换网络中只使用 STP实例,那么在稳定状态中,仍会有一些端口处于阻塞状态不被使用,冗余链路实际上变成了备份链路. PVST+特性能为每个VLAN创建一个STP实例. ...
- scrapy框架中Item Pipeline用法
scrapy框架中item pipeline用法 当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的pyt ...
- Codeforces 1142E(图、交互)
题目传送 官方题解说的很好了,剩下的就是读大佬代码了,前面是tarjan求SCC缩点图.我图论没学过,接下来删点是怎么操作看得有点头秃,直到我看到了%%%安德鲁何神仙的代码. 按照题面连通紫线以后,我 ...
- linux系统下安装PHP扩展pcntl
1.查看当前的PHP版本并下载一个同样版本的php(我的是php5.6.22,我下的是php5.6.22) wget http://hk1.php.net/get/php-5.5.10.tar.gz ...
- 软件管理命令-- rpm
RPM(红帽软件包管理器) 安装软件 rpm -ivh filename.rpm 升级软件 rpm -Uvh filename.rpm 卸载软件 rpm -e filename.rpm -i 安装一个 ...
- JDK原子类操作
JDK原子类操作及原理 在JDK5之后,JDK提供了对变量的原子类操作, java.util.concurrent.atomic里都是原子类 原子类的分类 原子更新基本类型 原子更新数组 原子更新抽象 ...
- LR中常见请求的使用示例
Action(){ //application/x-www-form-urlencoded //application/json //web_add_auto_header("Content ...