题意:输入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. BeatifulSoup模块

    一.介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你 ...

  2. 【python】spark+kafka使用

    网上用python写spark+kafka的资料好少啊 自己记录一点踩到的坑~ spark+kafka介绍的官方网址:http://spark.apache.org/docs/latest/strea ...

  3. mysql 修改配置文件my.cnf失败

    一.连接Mysql提示无法通过socket的解决方法连接到本地MySQL服务器 http://www.aiezu.com/db/mysql_cant_connect_through_socket.ht ...

  4. java Swing组件和事件处理

    1.常见的容器 JComponent是 Container 的子类,中间容器必须添加到底层容器中才能够发挥作用, JPanel 面板 :使用jPanel 创建一个面板,再通过添加组件到该面板上面,JP ...

  5. HTML&javaSkcript&CSS&jQuery&ajax(七)

    ’一.HTML5 实例  <video width="430" controls>   <source src="mov_nnn.mp4" t ...

  6. BrupSuite渗透测试笔记(十)

    一.Brup Repeater通常结合Proxy(历史记录),Scanner(扫描记录).Target(站点地图)等,通过其他工具上的右键执行[Send to Repeater],之后跳转到Repea ...

  7. 数据恢复Winhex的核心理念

    一.数据恢复就是寻找有价值的东西,其本质是数据定位,检索技术.存在的有迹可循,毁灭的无影无踪.这就譬如说,一本撕烂的书输的目录不见了,但是内容全在,我们就可以读到内容,但是内容不存在了,也就无法在找到 ...

  8. java 学习中出过的错误

    1. 运行异常 C:\Users\plan-B\java>java TapeDeckTestDrive.class 错误: 找不到或无法加载主类 TapeDeckTestDrive.class

  9. 回到未来123Back To The Future

    或许,决定着现在的过去已经无法改变,但决定着未来的现在,却在我们每个人的手里. 路?我们要去的地方不需要路.(Roads? Where we're going we don't need roads) ...

  10. 纯css3实现的switch开关按钮

    效果如图 <p> <label><input class="mui-switch mui-switch-anim" type="checkb ...