zoukankan      html  css  js  c++  java
  • UVA232-纵横字谜的答案

    题目:https://vjudge.net/problem/UVA-232

    分析:在输入的同时用序号对起始格标记,然后按照输出要求输出即可。

    注意:1.行和列的单词要按照序号从小到大输出。

          2.每行的单词首字母左边不能有白格,每列的单词首字母上边不能有白格。

          3.本题最后一个样例末尾没有空行。

          4.输入的时候每一行最后可能有换行。

     1 #include <stdio.h>
     2 #include <string.h>
     3 int main(void){
     4     int l,w;//l表示矩阵行数,w表示矩阵宽度
     5     char c[11][13];
     6     int f[11][13];
     7     int k=0;
     8     while(scanf("%d",&l)==1&&l){
     9             int t=1;
    10         scanf("%d",&w);
    11         memset(c,'',sizeof(c));
    12         memset(f,0,sizeof(f));
    13         for(int i=1;i<=l;i++){
    14         for(int j=1;j<=w;j++){//输入可以用字符串输入,但为了边读边做选择逐个字符读入
    15                 scanf("%c",&c[i][j]);
    16                 if(c[i][j]==' '||c[i][j]=='
    ')//处理行末的空格或换行
    17                 scanf("%c",&c[i][j]);
    18                 if((i-1==0||j-1==0)&&c[i][j]!='*'){
    19                     f[i][j]=t;
    20                     t++;
    21                 }
    22                 else if((c[i-1][j]=='*'||c[i][j-1]=='*')&&f[i][j]==0&&c[i][j]!='*'){
    23                     f[i][j]=t;
    24                     t++;
    25                 }
    26             }
    27         }
    28         if(k)printf("
    ");
    29         printf("puzzle #%d:
    Across
    ",++k);//输出行的单词
    30         for(int i=1;i<=l;i++){
    31             for(int j=1;j<=w;){
    32                 if(f[i][j]!=0){
    33                     printf("%3d.",f[i][j]);
    34                     while(c[i][j]!='*'&&j<=w){
    35                         printf("%c",c[i][j]);
    36                         j++;
    37                     }
    38                     printf("
    ");
    39                 }
    40                 j++;
    41             }
    42         }
    43         printf("Down
    ");//输出列的单词
    44         for(int i=1;i<=l;i++){
    45             for(int j=1;j<=w;j++){
    46                 if(f[i][j]!=0&&(c[i-1][j]=='*'||i-1==0)){
    47                     int h=i;
    48                     printf("%3d.",f[i][j]);
    49                     while(c[h][j]!='*'&&h<=l){
    50                         printf("%c",c[h][j]);
    51                         h++;
    52                     }
    53                     printf("
    ");
    54                 }
    55             }
    56         }
    57     }
    58     return 0;
    59 }
    终究独木难支。
  • 相关阅读:
    IntelliJ IDEA 设置代码提示或自动补全的快捷键
    spring框架学习(一)
    java数据库连接池技术原理(浅析)
    Spring事务管理
    Android invalidate 用法
    sharedPreferences存储文件
    Android Service组件
    SQLite版本升级
    在android.app.Application中定义全局变量 .
    android观察者模式
  • 原文地址:https://www.cnblogs.com/yanying7/p/12259488.html
Copyright © 2011-2022 走看看