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 }
  • 相关阅读:
    初识函数作业
    HTTP协议那些事儿(Web开发补充知识点)
    文件操作
    文件操作作业
    深浅拷贝
    深浅拷贝作业
    小数据池 is和== 再谈编码
    小数据池/is和==/再谈编码作业
    如何用好 github 中的 watch、star、fork
    Navicat Premium Mac 12 破解(亲测可用!!!)
  • 原文地址:https://www.cnblogs.com/ohyee/p/5119672.html
Copyright © 2011-2022 走看看