IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 1874. 哞加密 -> 正文阅读

[数据结构与算法]1874. 哞加密

许多人都不知道,奶牛很喜欢拼图,特别是单词拼图。

农夫约翰的奶牛最近发明了一个有趣的“单词查找器”拼图。

这种拼图的一个例子是:

USOPEN
OOMABO
MOOMXO
PQMROM
作为奶牛,它们唯一感兴趣的单词是 MOO,它可以在拼图中多次沿水平、垂直、45度斜线或135度斜线出现。

上例中,MOO 一共出现了 6 次。

农夫约翰也是个拼图迷,由于奶牛们不希望他在它们之前解决“单词查找器”拼图,因此它们使用”替换密码“对内容进行了加密。

该“替换密码”用不同的字母替换了字母表中的每个字母。

例如,A 可以映射到 X,B 可以映射到 A,依此类推。

没有字母映射到自身,也没有两个字母映射到同一个字母(否则解将是不明确的)。

不幸的是,奶牛忘记了替换密码的具体加密方式。

请帮助它们确定如果使用适当的替换密码解密,谜题中可能存在的最大 MOO 数。

输入格式

第一行包含 N,M,表示拼图的尺寸为 N 行 M 列。

接下来 N 行,每行包含 M 个大写字母,形容加密后的拼图。

输出格式

输出如果使用适当的替换密码解密,谜题中可能存在的最大 MOO 数。

数据范围

1≤N,M≤50

输入样例:

4 6
TAMHGI
MMQVWM
QMMQSM
HBQUMQ

输出样例:

6

样例解释
在此样例中,M 和 O 分别被替换为了 Q 和 M。

以此解密最多可存在 6 个 MOO。

代码:

// 寻找八个方向中 ABB形式的相同字符串个数的最大值
#include <bits/stdc++.h>
using namespace std;

const int N = 55;
char g[N][N];
int n, m;
int ne[8][2] = {{-1, -1}, {-1, 0}, {-1, 1}, {0, -1}, {0, 1}, {1, -1}, {1, 0}, {1, 1}};
unordered_map<string, int> mp;
int main()
{
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
        cin >> g[i] + 1;

    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            for (int k = 0; k < 8; k++)
            {
                int x = i, y = j;
                string str;
                str = str + g[x][y];
                bool flag = 1;
                for (int u = 0; u < 2; u++)
                {
                    x += ne[k][0], y += ne[k][1];
                    if (x < 1 || x > n || y < 1 || y > m)
                    {
                        flag = 0;
                        break;
                    }
                    str += g[x][y];
                }
                if (flag && str[0] != str[1] && str[1] == str[2] && str[0] != 'M' && str[1] != 'O')
                    mp[str]++;
            }
        }
    }

    int res = 0;
    for (auto it : mp)
        res = max(res, it.second);

    cout << res;
    return 0;
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-29 12:21:18  更:2022-04-29 12:24:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:55:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码