首页 > 试题广场 >

矩阵

[编程题]矩阵
  • 热度指数:92 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 128M,其他语言256M
  • 算法知识视频讲解
给出一个n * m的矩阵。让你从中发现一个最大的正方形。使得这样子的正方形在矩阵中出现了至少两次。输出最大正方形的边长。

输入描述:
第一行两个整数n, m代表矩阵的长和宽;
接下来n行,每行m个字符(小写字母),表示矩阵;


输出描述:
输出一个整数表示满足条件的最大正方形的边长。
示例1

输入

5 10
ljkfghdfas
isdfjksiye
pgljkijlgp
eyisdafdsi
lnpglkfkjl

输出

3

备注:
对于30%的数据,n,m≤100;
对于100%的数据,n,m≤500;
头像 心早已飞去
发表于 2022-09-26 20:31:08
2022.9.26 不会写就算了,结果题解只有一份代码,所以在观摩了别人的代码后,决定给各位撑把伞,第一次写题解见谅。 一.如何快速比较两个正方形矩阵是不是相同。 把字符转化数字求解,定义base1,base2为基数3,7; has[i][j] = has[i][j-1]*base1 + mp[i] 展开全文
头像 张广文
发表于 2020-03-15 20:05:18
include include using namespace std; typedef unsigned long long ull;unordered_map <ull,bool> mp;ull hash2[505][505],p1=469762049,p2=998244353,po 展开全文