您的位置:首页 > 其它

[UVA232]Crossword Answers

2016-02-20 10:13 477 查看
吸取了上一次的经验,这道题一共提交了两次得到AC(好开心,第一次这么少的次数就A了)。

注意事项:

1.输入上,这次非常的严格。输出上还是严格的按照要求来, 比如最后没有另外的空行啊, 序号的输出可以用%3d来输出(没尝试过其他的,scanf(“%3dxxxx”)通过了)。

技巧:

1.在CROSSWORD的后面一列和最下面一列用’*’填充,来简化输出的复杂度。

2.虽然题目要求排序,但是不一定要读出来每个单词之后排序,鉴于题目的数据量很小(10×10),可以遍历每个格子,因为序号是自左向右自上而下排列的,所以只要按照这个顺序遍历即可。

最后附上代码。

#include <stdio.h>

int main(void)
{
int puzzle_num[11][11] = { 0 };
char puzzle[11][11];
int count_puzzle, count_total, total_row, total_column, count_row, count_column, temp_row;
count_puzzle = 0;
while (scanf("%d", &total_row))
{
if (total_row == 0)
break;
scanf(" %d", &total_column);
while (getchar() != '\n');
if (count_puzzle++ != 0)
printf("\n");
printf("puzzle #%d:\n", count_puzzle);
for (count_row = 0; count_row < total_row; count_row++)
{
gets(puzzle[count_row]);
puzzle[count_row][total_column] = '*';
}
for (count_column = 0; count_column < total_column; count_column++)
puzzle[total_row][count_column] = '*';
for (count_total = 1, count_row = 0; count_row < total_row; count_row++)
for (count_column = 0; count_column < total_column; count_column++)
if (count_row - 1 < 0 || count_column - 1 < 0 || puzzle[count_row - 1][count_column] == '*' || puzzle[count_row][count_column - 1] == '*')
if (puzzle[count_row][count_column] != '*')
puzzle_num[count_row][count_column] = count_total++;
printf("Across\n");
for (count_row = 0; count_row < total_row; count_row++)
for (count_column = 0; count_column < total_column; count_column++)
{
if (puzzle[count_row][count_column] == '*')
continue;
printf("%3d.", puzzle_num[count_row][count_column]);
while (puzzle[count_row][count_column] != '*')
printf("%c", puzzle[count_row][count_column++]);
printf("\n");
}
printf("Down\n");
for (count_row = 0; count_row < total_row; count_row++)
for (count_column = 0; count_column < total_column; count_column++)
{
if (puzzle[count_row][count_column] == '*' || (count_row - 1 > -1 && puzzle[count_row - 1][count_column] != '*'))
continue;
temp_row = count_row;
printf("%3d.", puzzle_num[count_row][count_column]);
while (puzzle[temp_row][count_column] != '*')
printf("%c", puzzle[temp_row++][count_column]);
printf("\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uva