题意:输入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的更多相关文章

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

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

  2. UVa 232 Crossword Answers

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

  3. Crossword Answers UVA - 232

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

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

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

  5. UVa 714 Copying Books(二分)

    题目链接: 传送门 Copying Books Time Limit: 3000MS     Memory Limit: 32768 KB Description Before the inventi ...

  6. UVa 12505 Searching in sqrt(n)

    传送门 一开始在vjudge上看到这题时,标的来源是CSU 1120,第八届湖南省赛D题“平方根大搜索”.今天交题时CSU突然跪了,后来查了一下看哪家OJ还挂了这道题,竟然发现这题是出自UVA的,而且 ...

  7. 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, ...

  8. UVA 1252 十五 Twenty Questions

    十五 Twenty Questions Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submi ...

  9. UVa 1640 (计数) The Counting Problem

    题意: 统计[a, b]或[b, a]中0~9这些数字各出现多少次. 分析: 这道题可以和UVa 11361比较来看. 同样是利用这样一个“模板”,进行区间的分块,加速运算. 因为这里没有前导0,所以 ...

随机推荐

  1. 量化投资与Python

    目录: 一.量化投资第三方相关模块 NumPy:数组批量计算 Pandas:表计算与数据分析 Matplotlib:图表绘制 二.IPython的介绍 IPython:和Python一样 三.如何使用 ...

  2. Mycat节点扩缩容及高可用集群方案

    数据迁移与扩容实践: 工具目前从 mycat1.6,准备工作:1.mycat 所在环境安装 mysql 客户端程序. 2.mycat 的 lib 目录下添加 mysql 的 jdbc 驱动包. 3.对 ...

  3. (不断更新)关于显著性检测的调研-Salient Object Detection: A Survey

    <Salient Object Detection: A Survey>作者:Ali Borji.Ming-Ming Cheng.Huaizu Jiang and Jia Li 基本按照文 ...

  4. mybatis-查询过程

    基本的查询过程: sqlsession--->executor---->statementhandler---->statement----->db InputStream r ...

  5. Java在线备份和还原MySQL数据库。

    2018年6月29日14:00:48 阅读数:1534 今天整了整整一整天,终于使用Java在线备份和还原MySQL数据库了,哎,备份倒是很快,就是在还原的时候遇到了一个问题,也不报错,结果将sql语 ...

  6. config.GetSection(key)编译不通过

    要安装这个版本

  7. MyBatis - 5.缓存机制

    MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制.缓存可以极大的提升查询效率. MyBatis系统中默认定义了两级缓存. 一级缓存和二级缓存. 1.默认情况下,只有一级缓存( ...

  8. Vs2015 本地git获取的代码目录文件修改后,启动提示error:Unable to start program “C:\Program Files\dotnet\dotnet.exe” 已解决.

    http://stackoverflow.com/questions/39938453/unable-to-start-program-c-program-files-dotnet-dotnet-ex ...

  9. noip斗地主

    题解: 5分钟看题 25分钟码完 然后调了一下 样例1s??? 好吧我把只出一张牌当成决策了.. 判断了一下前面没有出牌再考虑这个决策(是不是傻逼??) 交上去65 于是愉快的改状压 改到一半的时候想 ...

  10. alpha冲刺6/10

    目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:感恩节~ 团队部分 后敬甲(组长) 过去两天完成了哪些任务 文字描述 设计了拍照界面和图片上传界面 沟通了前端进度 接下 ...