hdu 2859】的更多相关文章

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2859 给你一个n*n的矩阵,问你最大的对称度是多少(左下右上为对称线) dp[i][j]表示i行j列元素的最大对称度 每到一个元素的时候,往上边和右边扩展看字符最优的对称长度 与dp[i - 1][j - 1]进行比较取最优即可. //#pragma comment(linker, "/STACK:102400000, 102400000") #include <algorithm&…
http://acm.hdu.edu.cn/showproblem.php?pid=2859     Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 996    Accepted Submission(s): 468 Problem Description Today is army day, but the servicemen a…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2859 题目大意:对称矩阵是这样的矩阵,它由“左下到右”线对称. 相应位置的元素应该相同. 例如,这里是3 * 3对称矩阵: cbx cpb zcc 给出任意的n*n的矩阵找出里面最大的对称的子矩阵,输出大小. 解题思路:有这样一个规律,对于每个字符看该列以上和该行右侧的字符匹配量,如果匹配量大于右上角记录下来的矩阵大小,就是右上角的数值+1,否则就是这个匹配量.根据这个规律,把n*n的点都遍历以便一…
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2859 Phalanx Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2792    Accepted Submission(s): 1357 Problem Description Today is army day, but the s…
点击打开链接 题意: 给你一个n*n的矩阵,矩阵中只含有26个小写字母,求其中最大的对称矩阵的大小 当我们算到s[i][j]时,每次我们只需要将它上方的和右方的依次比较,看是否相同 注意这里不能只比较s[i-1][j]和s[i][j+1],因为可能出现不符合的情况,如 zaba cbab abbc cacq 当我们比较到红色的b的时候,如果只比较与他相邻的两个即绿色的b,就会从dp[i-1][j+1]多+1,而显然蓝色的部分不同 当i!=0&&dp[i-1][j+1]>i-a时,dp…
简单二维dp.o(n^3)效率过的.不知道有没有o(n^2)的解法. 为了方便点,先左右交换一下. dp[i][j]表示以[i,j]为左上角的最大对称矩阵长度 那么dp[i][j]=min(Max,dp[i+1][j+1])+1; 其中Max是以[i,j]为起点,i这一行和j这一列最长公共前缀的长度 #include<cstdio> #include<cstring> #include<cmath> #include<stack> #include<v…
Problem Description Today is army day, but the servicemen are busy with the phalanx for the celebration of the 60th anniversary of the PRC.A phalanx is a matrix of size n*n, each element is a character (a~z or A~Z), standing for the military branch o…
Phalanx Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 363    Accepted Submission(s): 170 Problem Description Today is army day, but the servicemen are busy with the phalanx for the celebratio…
#include<stdio.h> char s[1010][1010]; int map[1010][1010]; int main() {  int n,i,j,k,ii,jj;  while(scanf("%d",&n),n) {   for(i=0;i<n;i++)    scanf("%s",s[i]);   int su=-1;   for(i=0;i<n;i++)    for(j=0;j<n;j++) {    …
题意: 如今有一个n*n的矩阵,然后每一个格子中都有一个字母(大写或小写组成).然后询问你如今最大的对称子矩阵的边长是多少.注意这里的对角线是从左下角到右上角上去的. 思路: 这道题我自己写出了dp的定义式,可是要怎么转移方程并没有推出来. 我看了好久的题解才明确的,果然还是太弱... 首先我们定义:dp[i][j]为第i行第j列所可以组成的最大对称子矩阵的长度. 关于对角线全然对称的矩阵! 转移方程为:dp[i][j]=dp[i-1][j+1]+1 : 注意这里是由点(i-1,j+1)推过来的…