• 洛谷P1101 单词方阵【暴力】【字符串】


    题目描述

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

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

    输入输出格式

    输入格式:

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

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

    输出格式:

    突出显示单词的n×nn 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

    题意:

    给定一个n*n的字符矩阵,问能不能在行、列、对角线一共八个方向中找到字符串"yizhong"

    把所有除"yizhong"之外的字符变成‘*’

    思路:

    数据量只有100,所以随便怎么暴力都行

      1 //#include<bits/stdc++>
      2 #include<stdio.h>
      3 #include<iostream>
      4 #include<algorithm>
      5 #include<cstring>
      6 #include<stdlib.h>
      7 #include<queue> 
      8 #include<map>
      9 #include<stack>
     10 #include<set>
     11 
     12 #define LL long long
     13 #define ull unsigned long long
     14 #define inf 0x3f3f3f3f 
     15 
     16 using namespace std;
     17 int n;
     18 const int maxn = 105;
     19 string ch[maxn]; 
     20 bool yes[maxn][maxn];
     21 
     22 int main()
     23 {
     24     scanf("%d", &n);
     25     for(int i = 0; i < n; i++){
     26         cin>>ch[i];
     27     } 
     28     
     29     for(int i = 0; i < n; i++){
     30         for(int j = 0; j <= n - 7; j++){
     31             string tmp = "";
     32             for(int k = 0; k < 7; k++){
     33                 tmp += ch[i][j + k];
     34             }
     35             if(tmp == "yizhong"){
     36                 for(int k = 0; k < 7; k++){
     37                     yes[i][j + k] = true;
     38                 }
     39             }
     40         }
     41         for(int j = n - 1; j >= 6; j--){
     42             string tmp = "";
     43             for(int k = 0; k < 7; k++){
     44                 tmp += ch[i][j - k];
     45             }
     46             if(tmp == "yizhong"){
     47                 for(int k = 0; k < 7; k++){
     48                     yes[i][j - k] = true;
     49                 }
     50             }
     51         }
     52     }
     53     
     54     for(int i = 0; i < n; i++){
     55         for(int j = 0; j <= n - 7; j++){
     56             string tmp = "";
     57             for(int k = 0; k < 7; k++){
     58                 tmp += ch[j + k][i];
     59             } 
     60             if(tmp == "yizhong"){
     61                 for(int k = 0; k < 7; k++){
     62                     yes[j + k][i] = true;
     63                 }
     64             }
     65         }
     66         for(int j = n - 1; j >= 6; j--){
     67             string tmp = "";
     68             for(int k = 0; k < 7; k++){
     69                 tmp += ch[j - k][i];
     70             }
     71             if(tmp == "yizhong"){
     72                 for(int k = 0; k < 7; k++){
     73                     yes[j - k][i] = true;
     74                 }
     75                 
     76             }
     77         }
     78     }
     79     
     80     for(int i = 0; i <= n - 7; i++){
     81         for(int j = -n + 1 + i; j <= i; j++){
     82             string tmp = "";
     83             for(int k = 0; k < 7; k++){
     84                 tmp += ch[i + k][i + k - j];
     85             }
     86             if(tmp == "yizhong"){
     87                 for(int k = 0; k < 7; k++){
     88                     yes[i + k][i + k - j] = true;
     89                 }
     90             }
     91         }
     92     }
     93     for(int i = n - 1; i >= 6; i--){
     94         for(int j = -n + 1 + i; j <= i; j++){
     95             string tmp = "";
     96             for(int k = 0; k < 7; k++){
     97                 tmp += ch[i - k][i - k - j];
     98             }
     99             if(tmp == "yizhong"){
    100                 for(int k = 0; k < 7; k++){
    101                     yes[i - k][i - k - j] = true;
    102                 }
    103             }
    104         }
    105     }
    106     
    107     for(int i = 0; i <= n - 7; i++){
    108         for(int j = n - 1; j >= 6; j--){
    109             string tmp = "";
    110             for(int k = 0; k < 7; k++){
    111                 tmp += ch[i + k][n - 2 - i - k];
    112             }
    113             if(tmp == "yizhong"){
    114                 for(int k = 0; k < 7; k++){
    115                     yes[i + k][n - 2 - i - k] = true;
    116                 }
    117             }
    118         }
    119     }
    120     for(int i = n - 1; i >= 6; i--){
    121         for(int j = 0; j <= n - 7; j++){
    122             string tmp = "";
    123             for(int k = 0; k < 7; k++){
    124                 tmp += ch[i - k][n - 2 - i + k];
    125             }
    126             if(tmp == "yizhong"){
    127                 for(int k = 0; k < 7; k++){
    128                     yes[i - k][n - 2 - i - k] = true;
    129                 }
    130                 
    131             }
    132         }
    133     }
    134     
    135     for(int i = 0; i < n; i++){
    136         for(int j = 0; j < n; j++){
    137             if(yes[i][j]){
    138                 printf("%c", ch[i][j]);
    139             }
    140             else{
    141                 printf("*");
    142             }
    143         }
    144         printf("
    ");
    145     }
    146     return 0;    
    147 } 
  • 相关阅读:
    Unity 之 中文乱码
    fork调用的底层实现
    Linux错误代码含义
    VMware 获取该虚拟机的所有权失败
    Qt ------ QAction
    C++ ------ const迭代器 和 const_iterator的区别
    IAR ------- 在线调试技巧
    STM32 ------ HardFault_Hander 中断函数
    从一张表中复制数据到另一张表中
    分布式任务调度平台xxl-job
  • 原文地址:https://www.cnblogs.com/wyboooo/p/10347167.html
Copyright © 2020-2023  润新知