这一题的话,输出的时候,我们要按照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-纵横字谜的答案的更多相关文章

  1. UVa 714 Copying Books - 二分答案

    求使最大值最小,可以想到二分答案. 然后再根据题目意思乱搞一下,按要求输出斜杠(这道题觉得就这一个地方难). Code /** * UVa * Problem#12627 * Accepted * T ...

  2. Uva 232 一个换行WA 了四次

    由于UVA OJ上没有Wrong anwser,搞的多花了好长时间去测试程序,之前一直以为改OJ有WA,后来网上一搜才知道没有WA,哎哎浪费了好长时间.此博客用来记录自己的粗心大意. 链接地址:htt ...

  3. UVA 232 Corssword Answer

    题意:输入m*n大小的字符串(里面有*,*为黑格,其他为白格),然后对它编号,编号规则为从左到右,从上往下,且左边或上面没有白格(可能是黑格或越界),如下图: 注意: ①除第一次输出答案外,其余每次输 ...

  4. UVA 12097 Pie(二分答案)

    题目链接: 这道题虽然不是一道典型的二分答案题,但同样也可以用二分答案来做. 来二分面积为$area$的派,然后看看条件是否矛盾. 与其矛盾的便是$f+1$个人是否每个人都会有. 一个半径为$r$的派 ...

  5. UVA 12124 Assemble(二分答案)

    题目链接:https://vjudge.net/problem/UVA-12124 垃圾vjudge毁我青春!! 首先这道题是解决“最小值最大”的问题,所以要二分答案. 在这里我们二分$quality ...

  6. UVa 232 Crossword Answers

     Crossword Answers  A crossword puzzle consists of a rectangular grid of black and white squares and ...

  7. Crossword Answers UVA - 232

    题目大意 感觉挺水的一道题.找出左面右面不存在或者是黑色的格子的白各,然后编号输出一横向单词和竖向单词(具体看原题) 解析 ①找出各个格子的编号 ②对每个节点搜索一下 ③输出的时候注意最后一个数据后面 ...

  8. 【习题 3-6 UVA - 232】Crossword Answers

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 模拟题.注意场宽为3 [代码] #include <bits/stdc++.h> using namespace std ...

  9. 码书:编码与解码的战争 PDF 下载

    码书:编码与解码的战争 PDF 下载 下载地址:https://pan.baidu.com/s/14Y_krHh-unOv4g2KYFFDgQ 如需分享码:[打开微信]->[扫描右侧二维码]-& ...

随机推荐

  1. github的上传本地文档

    自从使用github以来,一直都是在github网站在线上传文件到仓库中,但是有时因为网络或者电脑的原因上传失败.最重要的原因是我习惯本地编辑,完成以后再一起上传github.看过了几个教程,总结出最 ...

  2. RN初始化项目报错

    解决方法:全局删除yarn

  3. [BZOJ2251/BJWC2010]外星联络

    Description 小 P 在看过电影<超时空接触>(Contact)之后被深深的打动,决心致力于寻找外星人的事业.于是,他每天晚上都爬在屋顶上试图用自己的收音机收听外星人发来的信息. ...

  4. 洛谷 P1121 环状最大两段子段和

    https://www.luogu.org/problemnew/show/P1121 不会做啊... 看题解讲的: 答案的两段可能有两种情况:一是同时包含第1和第n个,2是不同时包含第1和第n个 对 ...

  5. 【aspnetcore】在过滤器(Filter)中使用注入服务(ServiceFilter|TypeFilter)

    在MVC中,AOP是很常用的功能,我们经常会使用如 ActionFilter,IAuthorizeFilter 等描述对Controller和Action进行约束和扩展,一般做法如下: public ...

  6. [已读]JavaScript DOM编程艺术

    看到过很多人将它作为推荐入门书籍,当时我刚看完ppk和javascript精粹,于是看到这本就觉得很一般了.怎么说,它适合基础.

  7. F. Bakkar In The Army 二分

    http://codeforces.com/gym/100283/problem/F 思路是二分第几行,二分出来的行是总和 >= n的,那么第k - 1行一定要选,那么再在第k行中二分那一列. ...

  8. 17999 Light-bot 模拟 + kmp求循环节

    http://acm.scau.edu.cn:8000/uoj/mainMenu.html 17999 Light-bot 时间限制:1000MS  内存限制:65535K 提交次数:0 通过次数:0 ...

  9. jq或zp监听input的value改变问题

    $(document).on('input propertychange','#citySelectorValue',function () { alert("s"); } 以上J ...

  10. drupal6提示 Compilation failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 9 on line 615

    解决办法:将sites\all\modules\ctools\includes\cleanstring.inc文件中的61行改成62行这样子即可,如下图