[Crossword Answers UVA

来源:互联网 发布:plotagraph同类软件 编辑:程序博客网 时间:2024/06/09 22:40

Crossword Answers UVA - 232


#include <string.h>#include <stdio.h>//#define LOCALchar s[12][12];int num[12][12];int main(){    int cases = 0;#ifdef LOCAL    freopen("test.txt", "r", stdin);#endif    int r, c;    while (scanf("%d %d", &r, &c) == 2) {        memset(num, 0, sizeof(num));        for (int i = 0; i < r; ++i)            scanf("%s", s[i]);        int m = 1;        //mark the num        for (int i = 0; i < r; ++i) {            for (int j = 0; j < c; j++) {                if (s[i][j] == '*')                    continue;                if (i == 0 || s[i - 1][j] == '*' || j == 0 || s[i][j - 1] == '*')                    num[i][j] = m++;            }        }        if (cases) printf("\n");        printf("puzzle #%d:\nAcross\n", ++cases);        for (int i = 0; i < r; i++) {            for (int j = 0; j < c;) {                if (num[i][j] == 0 || s[i][j] == '*') {                    ++j;                    continue;                }                printf("%3d.", num[i][j]);                while (j < c && s[i][j] != '*') {                    putchar(s[i][j]);                    ++j;                }                printf("\n");            }        }        printf("Down\n");        for (int i = 0; i < r; i++) {            for (int j = 0; j < c; ++j) {                if (num[i][j] == 0 || s[i][j] == '*')                    continue;                printf("%3d.", num[i][j]);                int k = i;                while (k < r && s[k][j] != '*') {                    putchar(s[k][j]);                    num[k][j] = 0;                    ++k;                }                printf("\n");            }        }    }    return 0;}

属于模拟题,要控制好相关语句的输出顺序,以及,num[i][j]=0很重要!



原创粉丝点击