zoukankan      html  css  js  c++  java
  • Uva 232.Crossword Answers

    下面的输出一定要是%3d的格式来输出序号

    另外注意两个解之间的空格

     1 #include <cstdio>
     2 #include <cstring>
     3 using namespace std;
     4 
     5 //#define Debug
     6 
     7 int kase=0;
     8 bool Do();
     9 
    10 int main(){
    11     //freopen("in.txt","r",stdin);
    12     while(Do());
    13     return 0;
    14 }
    15 
    16 bool Do(){
    17     
    18     int r,c;
    19     char map[15][15];
    20     int number[15][15];
    21     int n=1;
    22     memset(number,0,sizeof(number));
    23 
    24     //INPUT
    25     scanf("%d",&r);
    26     if(r==0)return false;
    27     scanf("%d",&c);
    28 
    29     for(int i=0;i<r;i++)
    30         scanf("%s",map[i]);
    31     getchar();//
    
    32     //INPUT FINISHED
    33 
    34     //MARK
    35     for(int i=0;i<r;i++)
    36         for(int j=0;j<c;j++)
    37             if(map[i][j]!='*'&&(i==0||j==0||map[i-1][j]=='*'||map[i][j-1]=='*'))number[i][j]=n++;
    38     
    39 
    40     #ifdef Debug
    41         printf("##########DEBUG##########
    ");
    42         printf("%d %d
    ",r,c);
    43         for(int i=0;i<r;i++){
    44             for(int j=0;j<c;j++){
    45                 printf("%c",map[i][j]);
    46             }
    47             printf("
    ");
    48         }
    49         for(int i=0;i<r;i++){
    50             for(int j=0;j<c;j++){
    51                 printf("%3d",number[i][j]);
    52             }
    53             printf("
    ");
    54         }
    55         printf("##########DEBUG##########
    ");
    56     #endif
    57 
    58     if(kase!=0)printf("
    ");
    59     printf("puzzle #%d:
    ",++kase);
    60     bool mark[15][15];
    61 
    62     printf("Across
    ");
    63     memset(mark,false,sizeof(mark));
    64     for(int i=0;i<r;i++){
    65         for(int j=0;j<c;j++){
    66             if(number[i][j] && !mark[i][j]){
    67                 printf("%3d.",number[i][j]);
    68                 for(int k=j;k<c&&map[i][k]!='*';k++){
    69                     printf("%c",map[i][k]);
    70                     mark[i][k]=true;
    71                 }
    72                 printf("
    ");
    73             }
    74         }
    75     }
    76 
    77     printf("Down
    ");
    78     memset(mark,false,sizeof(mark));
    79     for(int i=0;i<r;i++){
    80         for(int j=0;j<c;j++){
    81             if(number[i][j] && !mark[i][j]){
    82                 printf("%3d.",number[i][j]);
    83                 for(int k=i;k<r&&map[k][j]!='*';k++){
    84                     printf("%c",map[k][j]);
    85                     mark[k][j]=true;
    86                 }
    87                 printf("
    ");
    88             }
    89         }
    90     }
    91 
    92 
    93     return true;
    94 }
  • 相关阅读:
    try和catch
    获取地址栏参数(E积分项目)
    正则验证,只能输入数字,每四位隔一个空格。
    E积分项目总结(绑卡页 第一步)
    本地存储localStorage用法详解
    python os 模块介绍
    生成器迭代器
    python 魔法方法
    匿名函数
    python自定义函数和内置函数
  • 原文地址:https://www.cnblogs.com/ohyee/p/5119672.html
Copyright © 2011-2022 走看看