算法竞赛入门经典(刘汝佳)习题3-6 UVa232

来源:互联网 发布:怎样才能注销淘宝账号 编辑:程序博客网 时间:2024/06/12 00:08

这题好像又写麻烦了=。=默默跑去看看dalao们的代码

//2017 3 8 P58 纵横字谜的答案 #include<stdio.h>#define MAXR 1000#define MAXC 10#define condi_1 table[i][j] != '*'#define condi_2 (i - 1 < 0 || j - 1 < 0)#define condi_3 (table[i - 1][j] == '*' || table[i][j - 1] == '*')int main(){    int kase = 0;    char table[MAXR][MAXC + 1] = {'\0'};    int input_i = 0, input_j = 0;    while(scanf("%d", &input_i) == 1 && input_i)    {        scanf("%d", &input_j);        for(int k = 0; k < input_i;k++)//读入数据             scanf("%s", table[k]);        printf("puzzle #%d:\n", ++kase);        printf("Across\n  ");        int i = 0, j = 0;        int num[MAXR][MAXC] = {0}, count = 0;        while((i + 1) * (j * 1) <= input_i * input_j && i < input_i)//标记起始格         {            if(condi_1 && (condi_2 || condi_3))                num[i][j] = ++count;                if((j + 1) == input_j)                {                    i++;                    j = 0;                }                else                    j++;        }        i = 0, j = 0;        while((i + 1) * (j + 1) <= input_i * input_j && i < input_i)        {            if(num[i][j])            {                printf("%d.%c", num[i][j], table[i][j]);                while(table[i][j + 1] != '*' && table[i][j + 1] != '\0')                    printf("%c", table[i][++j]);                printf("\n  ");            }            if((j + 1) == input_j)            {                i++;                j = 0;            }            else                j++;        }        printf("\n");        i = 0, j = 0;        int temp = 0;        printf("Down\n  ");        while((i + 1) * (j + 1) <= input_i * input_j && j < input_j)        {            if(num[i][j])            {                printf("%d.%c", num[i][j], table[i][j]);                num[i][j] = 0;                while(table[i + 1][j] != '*' && i + 1 < input_i)                {                    printf("%c", table[++i][j]);                    num[i][j] = 0;                }                printf("\n  ");            }            if(j + 1 == input_j)            {                temp++;                i++;                j = 0;            }            else            {                j++;                i = temp;            }        }        printf("\n");    }    return 0;}
0 0