博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
习题3-6 纵横字谜的答案(Crossword Answers, ACM/ICPC World Finals 1994, UVa232)
阅读量:7091 次
发布时间:2019-06-28

本文共 1424 字,大约阅读时间需要 4 分钟。

输入一个rc列(1≤rc≤10)的网格,黑格用“*”表示,每个白格都填有一个字母。 如

果一个白格的左边相邻位置或者上边相邻位置没有白格(可能是黑格,也可能出了网格边
界),则称这个白格是一个起始格。
首先把所有起始格按照从上到下、 从左到右的顺序编号为1, 2, 3,…,如图3-7所示。
3-7 rc列网格
接下来要找出所有横向单词(Across)。 这些单词必须从一个起始格开始,向右延伸到
一个黑格的左边或者整个网格的最右列。 最后找出所有竖向单词(
Down)。 这些单词必须
从一个起始格开始,向下延伸到一个黑格的上边或者整个网格的最下行。 输入输出格式和样
例请参考原题

#include 
using namespace std;char cA[10][10];//crowssword Answersint r,c;typedef pair
P;P p1;typedef struct{ P coordinate; bool across; bool down;}ad;//起始点数组,记录当前点坐标以及能否横纵向输出单词ad b[100];int main(){ //freopen("input.txt","r",stdin); int kase=0; while(~scanf("%d%d",&r,&c)&&r&&c){ getchar(); kase++; if(kase>=2) printf("\n"); printf("puzzle #%d:\n",kase); for(int i=0;i<100;i++){//初始化起始点数组; b[i].across=false; b[i].down=false; } char ca; for(int i=0;i
#include 
#include
#include
#define mem(x) memset(x,0,sizeof(x))using namespace std;int n,m;string maze[11];int flag[11][11]={0};void fun(int y,int x,int direct){ if(direct == 1) { printf("%3d.",flag[y][x]); for(int j = x;j
>n) { mem(flag); if(n==0) break; ++kase; if(kase!=1) cout<
>m; for(int i=0;i
>maze[i]; } int tag = 0; for(int i=0;i

转载于:https://www.cnblogs.com/alonglyn/p/9953967.html

你可能感兴趣的文章
[Mugeda HTML5技术教程之19]制作可定制贺卡
查看>>
如何创建自定义ASP.NET MVC5脚手架模板?
查看>>
【OpenGL】法线变换详解(Normal Transform)[转]
查看>>
强化学习入门第四讲 时间差分方法
查看>>
typedef和define混用产生的错误
查看>>
消息中间件系列第2讲:如何进行消息队列选型?
查看>>
Linux编程 1 (文件系统路径说明, 目录结构说明)
查看>>
nginx 系列 1 linux下安装以及配置IIS分发
查看>>
MFC的BeginWaitCursor和EndWaitCursor函数
查看>>
C# winForm webBrowser页面中js调用winForm类方法(转)
查看>>
设计模式
查看>>
1.3(Spring MVC学习笔记)数据绑定
查看>>
Linux下计划任务以及crontab权限问题
查看>>
JS防抖动
查看>>
运用onscroll事件//滚动窗口滚动条时触发
查看>>
java 安全 技术
查看>>
delphi BitmapCompress
查看>>
2019春第三次课程设计实验报告
查看>>
如何解决““.NET研究”呈现控件时出错”的问题
查看>>
预发布环境,Tag发布机制和可重复的部署过程
查看>>