description:

  • 给你 nnn 个长度为 mmm 的字符串。

  • 请你判断删去其中的几个(或者不删去),能使得将剩下字符串随意排列所形成的回文串长度最大。

  • 请你输出最大的长度和那个回文串。

  • 1≤n≤1001\le n\le 1001≤n≤100,1≤m≤501\le m\le 501≤m≤50。

  • translate by @ShineEternal。

solution:

我们将字符串两两判断,是否有一个与另一个的倒序相等即可。

但是要注意可能可以在最中间填一个自身回文串,且最多填一个,所以还要考虑这种情况,把自身回文串找出来,如果有一个没被用过,那就填进去即可。

code:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
char s[105][55],sx[105][55];
int mp[1005];
int a[1005];
int m;
int check(int i,int j)
{for(int k=0;k<m;k++){if(s[i][k]!=s[j][m-k-1])return 0;}return 1;
}
int main()
{int n;scanf("%d%d",&n,&m);int tmp=-1;for(int i=1;i<=n;i++){scanf("%s",s[i]);}/*for(int i=1;i<=n;i++){for(int j=0;j<m;j++){int k=m-j-1;sx[i][j]=s[i][k];}}*/int cnt=0;for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){//cout<<s[i]<<endl;if(check(i,j)){// printf("%d %d\n",i,j);a[++cnt]=i;a[++cnt]=j;//printf("cnt=%d\n",cnt);//ans++;}}}for(int i=1;i<=cnt;i++){mp[a[i]]=1;}//printf("mp=%d\n",mp[4]);for(int i=1;i<=n;i++){if(mp[i]!=1){//printf("i=%d\n",i);int tag=0;for(int j=0;j<m;j++){if(s[i][j]!=s[i][m-j-1]){tag=1;break;}}if(tag==0){tmp=i;}}}//printf("tmp=%d\n",tmp);if(tmp!=-1)printf("%d\n",(cnt+1)*m);elseprintf("%d\n",cnt*m);for(int i=1;i<=cnt;i++){if(i%2==1){//if(a[i]==tmp)flag=1;printf("%s",s[a[i]]);}//cout<<s[a[i]];}if(tmp!=-1){printf("%s",s[tmp]);}for(int i=cnt;i>=2;i--){if(i%2==0){//  if(a[i]==tmp)flag=1;printf("%s",s[a[i]]);}}printf("\n");return 0;
}

CF1304B Longest Palindrome 题解相关推荐

  1. 409 Longest Palindrome

    Longest Palindrome 这题我完全想错了. 求最长回文.~~统计个个字母出现次数.奇数的保留最大的那个.偶数全保留.~~这个思路完全错了. 因为奇数中成对的数字也是可以拿来用的. 正确的 ...

  2. leetcode409.Longest Palindrome

    题目要求 Given a string which consists of lowercase or uppercase letters, find the length of the longest ...

  3. Longest Palindrome CodeForces - 1304B(思维)

    Returning back to problem solving, Gildong is now studying about palindromes. He learned that a pali ...

  4. C#LeetCode刷题之#409-最长回文串(Longest Palindrome)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3788 访问. 给定一个包含大写字母和小写字母的字符串,找到通过这 ...

  5. leetcode题库:5.最长回文子串Longest Palindrome string

    题目描述: /** 题目地址:https://leetcode-cn.com/problems/longest-palindromic-substring/description/  * 题目:最长回 ...

  6. 【回文串9】LeetCode 409. Longest Palindrome

    LeetCode 409. Longest Palindrome Solution1:我的答案 有时候真笨的可以... class Solution { public:int longestPalin ...

  7. 【LeetCode题解-005】longest Palindrome Substring

    题目 Given a string s, find the longest palindromic substring in s. You may assume that the maximum le ...

  8. LeetCode Longest Palindrome(计算最长的对称串)

    题意:给出一个字符串,问用这个字符串的字符可以组成的最长的对称串的长度 思路:用map来做,如果字符的个数为偶数个,直接相加,如果字符个数为奇数个,取小于这个奇数的最在偶数.如果奇数个字符的个数存在多 ...

  9. LeetCode 力扣算法题解汇总,All in One

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: https://fuxuemingzhu.cn 关键词:LeetCode,力扣,算法,题解,汇总,解析 把自己刷过的所有题目做一个整理, ...

最新文章

  1. 设计模式之观察者模式学习笔记
  2. bzoj1601 [Usaco2008 Oct]灌水
  3. Docker Compose部署项目到容器-基于Tomcat和mysql的商城项目(附源码和sql下载)
  4. java初学者笔记总结day6
  5. linux的tty进程,Linux 进程详解 ps aux 命令 nohup kill 和 tty - 简明教程
  6. 脑洞大开!油画渲染的新算法 Paint Transformer!ICCV2021 Oral!
  7. 平台层-适配层-核心层|拆分环信ONE SDK架构
  8. LINQ查询表达式详解(2)——查询表达式的转换
  9. 哈尔滨工业大学-计算机系统大作业-程序人生
  10. 2018中国企业云计算应用现状及需求调研报告
  11. 手把手带你从0搭建一个Golang ORM框架(上)!
  12. php微信转发无法显示标题图片,微信分享到朋友圈的链接,内容打开正常,但在微信中分享时封面缩略图图像和标题显示不出来?...
  13. ei指什么_EI是什么
  14. 被夸大的伊朗“Twitter革命”
  15. 刷刷刷!-数据分析必刷文档整理
  16. 167 The Sultan's Successors
  17. mac下CSV文件编码格式查看与转换
  18. MySql项目查询优化经验总结
  19. DOA_GAN的近似复现
  20. MFC限制鼠标区域、画橡皮条线、任务栏显示图标、核对标记、文档背景色(二)

热门文章

  1. 论文笔记:主干网络——AlexNet
  2. 毕业论文大全 (本科)
  3. PIC16F1829 单片机配置和DEMO CODE
  4. 2011计算机考研分数线,2011华科计算机考研复试基本分数线.pdf
  5. 营业税与增值税的区别有哪些?
  6. java节假日 调休的代码,java 获取n个工作日后的日期(包含法定节假日、双休日、节后补班)...
  7. 乱扔垃圾,出来挨打?Python制作垃圾分类小游戏,从你做起。
  8. android studio 镜像服务器设置,Android studio配置国内镜像源的实现
  9. 告诉你咱穷人怎么过情人节
  10. 基于MySQL的淘宝用户行为数据分析