Chinaunix首页 | 论坛 | 博客
  • 博客访问: 77026
  • 博文数量: 32
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 284
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-26 14:00
个人简介

有梦想的人,正在努力

文章分类

全部博文(32)

文章存档

2015年(32)

我的朋友

分类: C/C++

2015-06-04 22:22:30


  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <string.h>

  4. int main()
  5. {
  6.     char puzzle[10][10];
  7.     int s[10][10];
  8.     int ct = 0;
  9.     int m, n;
  10.     while(scanf("%d", &m) == 1)
  11.     {
  12.         if(0 == m) break;
  13.         memset(s, 0, sizeof(s));
  14.         scanf("%d", &n);
  15.         int i = 0;
  16.         while(i < m)
  17.             scanf("%s", puzzle[i++]);

  18.         int j, p = 1;
  19.         for(i = 0; i < m; ++i)
  20.         {
  21.             for(j = 0; j < n; ++j)
  22.             {
  23.                 if('*' == puzzle[i][j]) continue;
  24.                 if(0 == i || 0 == j) s[i][j] = p++;
  25.                 else if('*' == puzzle[i - 1][j] || '*' == puzzle[i][j - 1]) s[i][j] = p++;
  26.             }
  27.         }

  28.         if(ct) printf("\n");
  29.         printf("puzzle #%d:\n", ++ct);

  30.         printf("Across\n");
  31.         i = j = 0;
  32.         while(i < m)
  33.         {
  34.             while(j < n)
  35.             {
  36.                 if(s[i][j] > 0)
  37.                 {
  38.                     printf("%3d.", s[i][j]);
  39.                     while(j < n && puzzle[i][j] != '*')
  40.                     {
  41.                         putchar(puzzle[i][j++]);
  42.                     }
  43.                     printf("\n");
  44.                 }
  45.                 else
  46.                     ++j;
  47.             }
  48.             ++i;
  49.             j = 0;
  50.         }

  51.         printf("Down\n");
  52.         i = j = 0;
  53.         while(i < m)
  54.         {
  55.             while(j < n)
  56.             {
  57.                 if(s[i][j] > 0)
  58.                 {
  59.                     printf("%3d.", s[i][j]);
  60.                     int x = i;
  61.                     while(x < m && puzzle[x][j] != '*')
  62.                     {
  63.                         s[x][j] = 0;
  64.                         putchar(puzzle[x++][j]);
  65.                     }
  66.                     printf("\n");
  67.                 }
  68.                 ++j;
  69.             }
  70.             ++i;
  71.             j = 0;
  72.         }
  73.     }
  74.     return 0;
  75. }

阅读(1304) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~