UVA232 纵横字的解答

不管如何还是纪念一下!

花费了将近2个小时,却还是wa。。。不说什么了

和样例输出一样, 不知道是哪里出了错。。。

#include<stdio.h>
#include<string.h>

int main(){
    int n, m, coun, k=0;
    char maps[15][15];
    int numap[15][15];
    memset(numap,0,sizeof(numap));
    memset(maps,0,sizeof(maps));
    
    while(scanf("%d",&n) == 1&&n){
        scanf("%d",&m);
        if(k++) printf("\n");
        coun = 0;
        for(int i = 1;i <= n; i++){
            scanf("%s",&maps[i][1]);
            for(int j = 1;j <= m;j++){
                
                if(i == 1 && maps[i][j] != '*'){
                    numap[i][j] = ++coun;
                }
                
                else if(i != 1 && j == 1 && maps[i][j] != '*'){
                    numap[i][j] = ++coun;
                }
                
                else if(maps[i][j-1] == '*' && maps[i][j] != '*'){
                    numap[i][j] = ++coun;
                }
        
                else if(maps[i][j] != '*' && maps[i-1][j] == '*'){
                    numap[i][j] = ++coun;
                }
            }
        }
        
        
         printf("puzzle #%d:\n",k);
        
        int t;
        
        printf("Across\n");
        for(int i = 1; i <= n; i++){
            t = 0;
            for(int j = 1; j <= m; j++){
                if(j == 1&&maps[i][j] != '*'){
                    if(t++) printf("\n");
                   printf("%3d.",numap[i][j]);
                }  
                else if(maps[i][j] != '*' && maps[i][j-1] == '*') {
                    if(t++) printf("\n");
                   printf("%3d.",numap[i][j]);
                }
                if(maps[i][j] != '*')  printf("%c",maps[i][j]);
            }
            printf("\n");
        }
        
        printf("Down\n");
        for(int i = 1; i <= n; i++) {
            for(int j = 1; j <= m; j++){
               if(i == 1 && maps[i][j] != '*') {
                     printf("%3d.",numap[i][j]);
               }
               else if(i != 1 && maps[i][j] != '*' && maps[i-1][j] == '*') {
                   printf("%3d.",numap[i][j]);
               }
               if(i == 1 && maps[i][j] != '*') {
                       for(int s = i; s <= n; s++){
                           if(maps[s][j] == '*')  break;
                           else printf("%c",maps[s][j]);
                       }
                    printf("\n");
               }
               else if(maps[i][j] != '*'&& maps[i-1][j] == '*'){
                     for(int s = i; s <= n; s++){
                           if(maps[s][j] == '*') break;
                           else printf("%c",maps[s][j]);
                       }
                       printf("\n");
               }
            }
        }
        
        
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值