码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 232 - Crossword Answers

时间:2015-06-14 20:06:21      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

题目: 给你一个二维的字符表,里面有一些字母和*,*和边界都当做是分隔符,

             按照图示方式编号连续位置(从上到下,从左到右)生成单词,输出所有横向和竖向单词。

分析:字符串。先按照顺序求出每个方格的编号,除单词开头字母外,其他都是0;

             然后,横向和总线扫描单词输出即可;(纵向的要先排序在输出)

说明:1.注意要按照顺序输出结果,2连续输出间有一个空行。

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>

using namespace std;

typedef struct _node
{
	int  id;
	char str[12];
}node;

node data[101];
char maps[12][12];
int  size[12][12];

int cmp(node a, node b)
{
	return a.id < b.id;
}

int main()
{
	int row,column,times = 1;
	while (cin >> row && row) {
		cin >> column;
		for (int i = 0; i < row; ++ i)
			cin >> maps[i];
		int id = 1;
		for (int i = 0; i < row; ++ i)
			for (int j = 0; j < column; ++ j)
				if (maps[i][j] != '*' && (!i || !j || maps[i-1][j] == '*' || maps[i][j-1] == '*'))
					size[i][j] = id ++;
				else size[i][j] = 0;
		
		if  (times > 1) printf("\n");
		printf("puzzle #%d:\n",times ++);
		printf("Across\n");
		for (int i = 0; i < row; ++ i) {
			int move = 0;
			while (move < column) {
				if (size[i][move]) {
					printf("%3d.",size[i][move]);
					int save = 0;
					while (move < column && maps[i][move] != '*')
						printf("%c",maps[i][move ++]);
					printf("\n");
				}else move ++;
			}
		}
		
		printf("Down\n");
		int count = 0;
		for (int i = 0; i < column; ++ i) {
			int move = 0;
			while (move < row) {
				if (size[move][i]) {
					data[count].id = size[move][i];
					int save = 0;
					while (move < row && maps[move][i] != '*')
						data[count].str[save ++] = maps[move ++][i];
					data[count ++].str[save ++] = 0;
				}else move ++;
			}
		}
		sort(data, data+count, cmp);
		for (int i = 0; i < count; ++ i)
			printf("%3d.%s\n",data[i].id, data[i].str);
	}
    return 0;
}


UVa 232 - Crossword Answers

标签:

原文地址:http://blog.csdn.net/mobius_strip/article/details/46492999

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!