UVA 232 Corssword Answer
题意:输入m*n大小的字符串(里面有*,*为黑格,其他为白格),然后对它编号,编号规则为从左到右,从上往下,且左边或上面没有白格(可能是黑格或越界),如下图:
注意:
①除第一次输出答案外,其余每次输出前要加换行。
②down的输出需要按照编号的顺序输出,而不是真的按位置从上到下。
③判断结束是遇到*和访问越界,判断开始是看前一个是不是*(Cross和Down只是i,j减一的不同)和访问开始(i==0)
附上一个样例:它的cross和down分别是:
和
。
所以down的输出是从左往右,从上到下的寻找非*的位置,找到后从此位置往下输出,遇到越界和*则结束此次输出,
例如:找到A,输出A,然后找到I,输出IMPOSE,然后找到M,输出MEO。
所以判断结束是越界和*,而判断开始是*和i==0。
- #include "stdio.h"
- #include "stdlib.h"
- #include "string.h"
- int num[][];
- char str[][];
- int judge(int i,int j)
- {
- if(str[i][j]=='*')
- return -;
- if(i==||j==)//边界
- return ;
- if(str[i-][j]=='*'||str[i][j-]=='*')//左或上为*
- return ;
- return ;
- }
- int main()
- {
- int n,m,i,j,k,count=,countNum=,returnValue;
- int printfNum=;
- char c;
- while(scanf("%d",&m)&&m)
- {
- scanf("%d",&n);
- count++;
- // if(count!=1)
- // printf("\n");//这两句写在这里也可以
- printfNum=;
- countNum=;
- for(i=;i<m;i++)
- {
- c=getchar();//取换行符
- for(j=;j<n;j++)
- {
- scanf("%c",&str[i][j]);
- }
- }
- //编号
- countNum++;
- memset(num,,sizeof(num));//初始化为0
- for(i=;i<m;i++)
- {
- for(j=;j<n;j++)
- {
- //判断,>0->非*,-1->*,0->在边界
- returnValue=judge(i,j);
- if(returnValue==)
- {
- num[i][j]=countNum;
- countNum++;
- }
- else{
- if(returnValue==-)
- num[i][j]=-;
- }
- }
- }
- // printf("num:\n");
- // for(i=0;i<m;i++)
- // {
- // for(j=0;j<n;j++)
- // printf("%-3d",num[i][j]);
- // printf("\n");
- // }
- //输出结果
- if(count!=)
- printf("\n");
- printf("puzzle #%d:\n",count);
- printf("Across\n");
- for(i=;i<m;i++)
- {
- for(j=;j<n;j++)
- {
- if((j==||num[i][j-]==-)&&num[i][j]>)
- {
- printf("%3d.",num[i][j]);
- for(k=j;k<n;k++)
- {
- printf("%c",str[i][k]);//如果和下面的if交换就无法判断边界了
- if(num[i][k+]==-||k==n-)
- {
- printf("\n");
- break;
- }
- }
- }
- }
- }
- // for(i=0;i<m;i++)//这种写法WA
- // {
- // for(j=0;j<n;j++)
- // {
- // if(printfNum==1&&num[i][j]>0)
- // {
- // if(num[i][j]!=1)
- // printf("\n");
- // printf("%3d.",num[i][j]);
- // printfNum=-printfNum;
- // }
- // if(str[i][j]!='*')
- // {
- // printf("%c",str[i][j]);
- // }
- // else
- // {
- // printfNum=1;
- // }
- // }
- // printfNum=1;
- // }
- printf("\n");
- printfNum=;
- printf("Down\n");
- for(i=;i<m;i++)
- {
- for(j=;j<n;j++)
- {
- if((i==||num[i-][j]==-)&&num[i][j]>=)
- {
- printf("%3d.",num[i][j]);
- for(k=i;k<m;k++)
- {
- printf("%c",str[k][j]);
- if(num[k+][j]==-||k==m-)
- {
- printf("\n");
- break;
- }
- }
- }
- }
- }
- }
- return ;
- }
UVA 232 Corssword Answer的更多相关文章
- Uva 232 一个换行WA 了四次
由于UVA OJ上没有Wrong anwser,搞的多花了好长时间去测试程序,之前一直以为改OJ有WA,后来网上一搜才知道没有WA,哎哎浪费了好长时间.此博客用来记录自己的粗心大意. 链接地址:htt ...
- 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 ...
- UVa 714 Copying Books(二分)
题目链接: 传送门 Copying Books Time Limit: 3000MS Memory Limit: 32768 KB Description Before the inventi ...
- UVa 12505 Searching in sqrt(n)
传送门 一开始在vjudge上看到这题时,标的来源是CSU 1120,第八届湖南省赛D题“平方根大搜索”.今天交题时CSU突然跪了,后来查了一下看哪家OJ还挂了这道题,竟然发现这题是出自UVA的,而且 ...
- UVa 11991:Easy Problem from Rujia Liu?(STL练习,map+vector)
Easy Problem from Rujia Liu? Though Rujia Liu usually sets hard problems for contests (for example, ...
- UVA 1252 十五 Twenty Questions
十五 Twenty Questions Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submi ...
- UVa 1640 (计数) The Counting Problem
题意: 统计[a, b]或[b, a]中0~9这些数字各出现多少次. 分析: 这道题可以和UVa 11361比较来看. 同样是利用这样一个“模板”,进行区间的分块,加速运算. 因为这里没有前导0,所以 ...
随机推荐
- BeautifulSoup的基本操作
>>> from bs4 import BeautifulSoup #导入 >>> soup = BeautifulSoup(url.content," ...
- 【linux】ftp使用端口转发问题
相关资料: 1.[ssh]端口转发 2.[ftp]主动模式和被动模式 先说结论:用端口转发无法解决ftp客户端与服务器的连接问题,原因是ftp的data端口不固定,不能把所有>1024的端口都做 ...
- swoole 简介
- 小学生都看得懂的C语言入门(4): 数组与函数
// 之前判断素数, 只需要到sqrt(x)即可,//更加简单的, 判断能够比已知的小于x的素数整除, 运行更快 #include <stdio.h> // 之前判断素数, 只需要到sqr ...
- RESTful架构解读
什么是REST REST与技术无关,代表的是一种软件架构风格.REST全称是Representational State Tranfer, 表征性状态转移. REST从资源的角度类审视整个网络,它将分 ...
- python调用PHP方法
PHP代码如下:<?php $method = $argv[1]; $param1 = $argv[2]; $param2 = $argv[3]; if(isset($method) & ...
- NPOI操作Excel(三)--解析Excel
通过前面两篇的基础学习,我们对NPOI有了一定了了解,下面就开始进入实战,解析下面格式的Excel(下面只是列举了几个例子),并保存入库 首先我们先分析一下,要解析这样的Excel,需要把指标[橘色背 ...
- Python函数之内置函数
截止导Python 3.6 目前内置函数有68个 以下是对这些内置函数的分类 一:作用域相关 以字典的形式返回作用域中的名字 locals # 返回本地作用域的所有名字 globals # 返回全局作 ...
- 插件使用一顶部消息提示---overhang
overhang 是一个非常好的消息提示插件,它是在顶部提示. 官方网站:https://github.com/paulkr/overhang.js 使用方法 1.引入jquery库和jqeury u ...
- 让simplejson支持datetime类型的序列化
simplejson是Python的一个json包,但是觉得有点不爽,就是不能序列化datetime,稍作修改就可以了: 原文:http://blog.csdn.net/hong201/article ...