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

Uva 232-crossword answers

时间:2015-02-26 09:50:03      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:

我的思路是网格的四周全部置为‘*‘,设置sign数组记录起始格

#include <stdio.h> #include <cstring> char a[20][20]; int sign[20][20]; int n = 1; int main() { int r, c, cnt, yes, first = 1; while(scanf("%d",&r)==1) { memset(sign,0,sizeof(sign)); cnt = 1; yes = 0; if(r == 0) break; scanf("%d",&c); getchar(); for(int i = 1; i <= r; i ++) { for(int j = 1; j <= c; j ++) {scanf("%c",&a[i][j]);} getchar(); } for(int i = 0; i <= r+1; i ++) a[i][0] = a[i][c+1] = *; for(int j = 0; j <= c+1; j++) a[0][j] = a[r+1][j] = *; for(int i = 1; i <= r; i++) for(int j = 1; j <= c; j++) if((a[i-1][j] == * || a[i][j-1] == *)&&a[i][j] !=*) sign[i][j] = cnt ++; if(!first) printf("\n"); first = 0; printf("puzzle #%d:\nAcross\n",n); for(int i = 1; i <= r; i ++) for(int j = 1; j <= c; j ++) { if(sign[i][j]) printf("%3d.",sign[i][j]); while(a[i][j] != *) { printf("%c",a[i][j]); j ++; yes = 1; } if(yes) { printf("\n"); yes = 0; } } printf("Down\n"); for(int i = 1; i <= r; i ++) for(int j = 1; j <= c; j ++) { int m = i; if(sign[i][j]) printf("%3d.",sign[i][j]); while(a[i][j] != *) { printf("%c",a[i][j]); a[i][j] = *; sign[i][j] = 0; yes = 1; i ++; } if(yes) { printf("\n"); yes = 0; } i = m; } n++; } return 0; }

 

Uva 232-crossword answers

标签:

原文地址:http://www.cnblogs.com/ekinzhang/p/4300520.html

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