• 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 }
  • 相关阅读:
    SpringMVC传值、转发、重定向例子
    内存、指针操作函数
    文件、磁盘操作函数
    字符串、数组操作函数 Copy Concat Delete Insert High MidStr Pos SetLength StrPCopy TrimLeft
    Delphi代码模拟“显示桌面”的功能
    SQLite 入门教程(四)增删改查,有讲究
    NET Core
    Publisher/Subscriber 订阅-发布模式
    数据分片
    C#调用Java方法
  • 原文地址:https://www.cnblogs.com/ohyee/p/5119672.html
Copyright © 2020-2023  润新知