zoukankan      html  css  js  c++  java
  • 洛谷——P1101 单词方阵

    https://www.luogu.org/problem/show?pid=1101#sub

    题目描述

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

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

    输入输出格式

    输入格式:

    第一行输入一个数n。(7<=n<=100)。

    第二行开始输入nXn的字母矩阵。

    输出格式:

    突出显示单词的nXn矩阵。

    输入输出样例

    输入样例#1:
    7
    aaaaaaa
    aaaaaaa
    aaaaaaa
    aaaaaaa
    aaaaaaa
    aaaaaaa
    aaaaaaa
    
    输出样例#1:
    *******
    *******
    *******
    *******
    *******
    *******
    *******


    没什么好说的~~~洛谷字符串有毒~
     1 #include <algorithm>
     2 #include <iostream>
     3 
     4 using namespace std;
     5 
     6 int n,mark[119][119];
     7 int fx[8]={0,0,1,1,1,-1,-1,-1};
     8 int fy[8]={1,-1,0,1,-1,0,1,-1};
     9 char yz[7]= {'y','i','z','h','o','n','g'},word[119][119];
    10 
    11 void print(int x,int y,int drict)
    12 {
    13     int cnt=0,xx=x,yy=y;
    14     for(int i=0;i<7;i++)
    15     {
    16         if(word[x][y]==yz[i]) cnt++;
    17         else break;
    18         x+=fx[drict];y+=fy[drict];
    19     }
    20     if(cnt!=7) return ;
    21     for(int i=0;i<7;i++)
    22     {
    23         mark[xx][yy]=1;
    24         xx+=fx[drict];yy+=fy[drict];
    25     }
    26 }
    27 
    28 int main()
    29 {
    30     cin>>n;
    31     for(int i=1;i<=n;i++)
    32         for(int j=1;j<=n;j++)
    33             cin>>word[i][j];
    34     for(int i=1;i<=n;i++)
    35       for(int j=1;j<=n;j++)
    36         if(word[i][j]=='y')
    37         for(int k=0;k<8;k++)
    38          if(word[i+fx[k]][j+fy[k]]=='i') print(i,j,k);
    39     for(int i=1;i<=n;i++)
    40     {
    41         for(int j=1;j<=n;j++)
    42             if(mark[i][j]) cout<<word[i][j];
    43             else cout<<'*';
    44         cout<<endl;
    45     }
    46     return 0;
    47 }
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    批处理命令系列
    CMD批处理之PC查看连过的WIFI密码
    数据结构与算法之各种方法遍历二叉树
    二叉树同构判定算法
    卡拉兹(Callatz)猜想
    Java之字符串比较大小
    Java报错之StackOverflowError
    火绒勒索病毒诱捕技术浅析
    数据结构与算法之二叉链树
    数据结构与算法之广义表的基本运算
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7123526.html
Copyright © 2011-2022 走看看