zoukankan      html  css  js  c++  java
  • P1101 单词方阵 题解

    题目描述

    给一n imes nn×n的字母方阵,内可能蕴含多个“yizhong”单词。单词在方阵中是沿着同一方向连续摆放的。摆放可沿着 88 个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间可以交叉,因此有可能共用字母。输出时,将不是单词的字母用*代替,以突出显示单词。例如:

    输入:
        8                     输出:
        qyizhong              *yizhong
        gydthkjy              gy******
        nwidghji              n*i*****
        orbzsfgz              o**z****
        hhgrhwth              h***h***
        zzzzzozo              z****o**
        iwdfrgng              i*****n*
        yyyygggg              y******g
    

    输入格式

    第一行输入一个数nn。(7 le n le 1007n100)。

    第二行开始输入n imes nn×n的字母矩阵。

    输出格式

    突出显示单词的n imes nn×n矩阵。

    输入输出样例

    输入 #1
    7
    aaaaaaa
    aaaaaaa
    aaaaaaa
    aaaaaaa
    aaaaaaa
    aaaaaaa
    aaaaaaa
    
    输出 #1
    *******
    *******
    *******
    *******
    *******
    *******
    *******
    
    输入 #2
    8
    qyizhong
    gydthkjy
    nwidghji
    orbzsfgz
    hhgrhwth
    zzzzzozo
    iwdfrgng
    yyyygggg
    输出 #2
    *yizhong
    gy******
    n*i*****
    o**z****
    h***h***
    z****o**
    i*****n*
    y******g

    用a,b标记x,y的加减,再找“y”字符

    的位置,搜索8个方向如果符合那么就赋值。处理后输出。

    #include<iostream>
    #include<cstdio>
    using namespace std;
    string s[111],s1[111];
    int a[8]={0,-1,-1,-1,0,1,1,1};
    int b[8]={1,1,0,-1,-1,-1,0,1};
    int t,t1,k1,k,i,j,n;
    bool b1;
    int main()
    {
    cin>>n;
    for (i=1;i<=n;i++)
    {
    cin>>s[i];
    }
    for(i=1;i<=n;i++)
    {
    for (j=1; j<=n; j++)
    {
    s1[i]+='0';
    }
    }
    for(i=1;i<=n;i++)
    {
    for(j=0;j<=n-1;j++)
    {
    if(s[i][j]=='y')
    {
    for(k=0;k<=7;k++)
    {
    t=i;
    t1=j;
    b1=1;
    for(k1=1;k1<=6;k1++)
    {
    t=t+a[k];
    t1=t1+b[k];
    if(t<1||t>n||t1<0||t1>n-1)
    {
    b1=0;
    }
    if(b1==0)
    {
    break;
    }
    if((k1==1&&s[t][t1]!='i')||(k1==2&&s[t][t1]!='z')||(k1==3&&s[t][t1]!='h')||(k1==4&&s[t][t1]!='o')||(k1==5&&s[t][t1]!='n')||(k1==6&&s[t][t1]!='g'))
    {
    b1=0;
    }
    }
    t=i;
    t1=j;
    if(b1==1)
    {
    for(k1=0;k1<=6;k1++)
    {
    s1[t][t1]=s[t][t1];
    t=t+a[k];
    t1=t1+b[k];
    }
    }
    }
    }
    }
    }
    for (i=1;i<=n;i++)
    {
    for (j=0;j<=n-1;j++)
    {
    if(s1[i][j]=='0')
    {
    s1[i][j]='*';
    }
    }
    }
    for(i=1;i<=n;i++)
    {
    cout<<s1[i]<<endl;
    }
    return 0;
    }

  • 相关阅读:
    $(document).ready(function() {。。。。。})里面的所有的代码都不执行(不执行初始化脚本)
    checkbox使用示例
    js中数组元素的添加和删除
    maven构建项目里classpath的位置
    Docker相关释义
    linux的systemctl服务及其使用
    RabbitMQ中客户端的Channel类里各方法释义
    java四种内部类详解
    生成随机字符串(三种方式)
    RabbitMQ在java中基础使用
  • 原文地址:https://www.cnblogs.com/tcwbob/p/12925562.html
Copyright © 2011-2022 走看看