• 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;
    }

  • 相关阅读:
    sqlmap基础使用(以sqli—labs第一关为例)
    IIS、Apache、Nginx日志记录的各个字段内容与含义
    建站+阿里云服务器上传个人制作网页
    SQL server 2005 在Windows server 2003上面的安装
    VMware里kali虚拟机的安装
    第三章web安全基础—http协议及burpsuite基本使用(brupsuite导入证书支持https访问)
    第三章web安全基础—互联网注册网站相关小知识
    第三章web安全基础—IIS发布dvbbs(动网论坛)及SQL2005问题解决
    根据现有目录批量创建文件夹
    PL/SQL通过存储过程为相同数据添加序号
  • 原文地址:https://www.cnblogs.com/qingtianBKY/p/6696981.html
Copyright © 2020-2023  润新知