[UVA232]Crossword Answers
2016-02-20 10:13
477 查看
吸取了上一次的经验,这道题一共提交了两次得到AC(好开心,第一次这么少的次数就A了)。
注意事项:
1.输入上,这次非常的严格。输出上还是严格的按照要求来, 比如最后没有另外的空行啊, 序号的输出可以用%3d来输出(没尝试过其他的,scanf(“%3dxxxx”)通过了)。
技巧:
1.在CROSSWORD的后面一列和最下面一列用’*’填充,来简化输出的复杂度。
2.虽然题目要求排序,但是不一定要读出来每个单词之后排序,鉴于题目的数据量很小(10×10),可以遍历每个格子,因为序号是自左向右自上而下排列的,所以只要按照这个顺序遍历即可。
最后附上代码。
注意事项:
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; }
相关文章推荐
- 1.10055 - Hashmat the brave warrior
- 2.10071 - Back to High School Physics
- 3.458 - The Decoder
- 4.694 - The Collatz Sequence
- 6.494 - Kindergarten Counting Game
- 7.490 - Rotating Sentences
- 8.414 - Machined Surfaces
- 9.488 - Triangle Wave
- A.457 - Linear Cellular Automata
- B.489 - Hangman Judge
- C.445 - Marvelous Mazes
- 1.10494 - If We Were a Child Again
- 2.424 - Integer Inquiry
- 3.10250 - The Other Two Trees
- 5.465 - Overflow
- 6.113 - Power of Cryptography
- 7.10161 - Ant on a Chessboard
- 8.621 - Secret Research
- 9.401 - Palindromes
- A.537 - Artificial Intelligence?