动态规划百题 第九题 HDU - 2859

该博客探讨了如何使用动态规划方法解决HDU 2859问题,即寻找给定矩阵中最大的对称子矩阵的边长。通过对矩阵中每个元素向上和向左扩展,找到最长的对称路径,并与前一状态的长度进行比较,从而确定最大对称矩阵的大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Q - Phalanx

 HDU - 2859 

给你一个矩阵,只由小写或大写字母构成。求出它的最大对称子矩阵的边长。

其中对称矩阵是一个k*k的矩阵,它的元素关于从左下角到右上角的对角线对称。 
例如下面这个3* 3的矩阵是对称矩阵: 
cbx 
cpb 
zcc

Input

多组数据。每一组第一行是一个 n (0<n<=1000),下面是n行,每一行有n个字母,中间没有空格。数据以n=0结束。

Output

每组数据输出最大的对称矩阵的边长。

Sample Input

3
abx
cyb
zca
4
zaba
cbab
abbc
cacq
0

Sample Output

3
3

题解:找一下从当前位置往上和往左最长的的对称长度,与上一个状态+1相比的最小值

#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
const long long mod = 1e9+7;
typedef long long int ll;
#define maxn 2000+5
#define INF 0x3f3f3f3f
#define LLF 0x7fffffffffffffff
char a[maxn][maxn];
int dp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值