• c语言 纵横字谜的答案


    //问题:纵横字谜的答案 输入一个r行c列(1=<r,c<=10),的网格,黑格用*号表示,每个白格都天线一个字母.如果一个白格的左边相邻位置或者上边相邻的位置没有白格(可能是黑格,可能是边界),则称这个白格是一个起始格
    //每一次输出必须从初始格 开始 到'*'或者边界结束
    //解题思路:二维数组 标记
    #include<stdio.h>
    #include<string.h>
    int main(){
        //定义表格
        char puzzle[10][10];
        //定义标记
        int mark[10][10];
        //换行标记
        int ct=0;
        //行 列
        int m,n;
        //输入m 并判断其是否正确输入
        while(scanf("%d",&m)==1){
            if(m==0)break;
            //置零
            memset(mark,0,sizeof(mark));
            //输入n
            scanf("%d",&n);
            int i=0;
            //初始化网格
            while(i<m)
                scanf("%s",puzzle[i++]);
            int j,p=1;
            //遍历 并标记
            for(int i=0;i<m;i++){
                for(j=0;j<n;j++){
                    //若是'*' 跳出循环 继续循环
                    if(puzzle[i][j]=='*')continue;
                    //标记初始格
                    if(i==0||j==0)mark[i][j]=p++;
                    else if(puzzle[i-1][j]=='*'||puzzle[i][j-1]=='*')mark[i][j]=p++;
                }
            }
            if(ct)printf(" ");
            printf("puzzle #%d: ",++ct);
            printf("Across ");
            //遍历输出
            for(int i=0;i<m;i++){
                for(int j=0;j<n;j++){
                    //初始格
                    if(mark[i][j]>0){
                        printf("%3d.",mark[i][j]);
                        //初始格后 一直输出 直到'*'
                        while(j<n&&puzzle[i][j]!='*'){
                            putchar(puzzle[i][j++]);
                        }
                        //换行
                        printf(" ");
                    }
                }

            }

            printf("Down ");
            for(int j=0;j<n;j++){
                for(int i=0;i<m;i++){
                    //初始格
                    if(mark[i][j]>0){
                        printf("%3d.",mark[i][j]);
                        //初始格后 一直输出 直到'*'
                        while(i<m&&puzzle[i][j]!='*'){
                            putchar(puzzle[i++][j]);
                        }
                        //换行
                        printf(" ");
                    }
                }

            }
        }
        return 0;
    }

  • 相关阅读:
    拷贝某文件至某位置
    Java对象的序列化和反序列
    常见的RuntimeException异常有哪些
    array数组增删元素
    失眠怎么办
    构造函数和函数区别(关键的new操作符)
    匿名函数递归(arguments.callee)和命名函数递归
    localeCompare方法在chrome浏览器取值问题
    random()方法
    iframe 父子页面之间取值
  • 原文地址:https://www.cnblogs.com/qingtianBKY/p/6613239.html
Copyright © 2020-2023  润新知