当前位置: 首页 > news >正文

分类信息网站程序俄罗斯网络攻击数量增长了80%

分类信息网站程序,俄罗斯网络攻击数量增长了80%,tvc广告片制作公司,网站包括哪些内容吗问题描述 “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。给你一个字符串,问最少在字符串尾添加多少字符,可以使得字符串变为回文串。 输入格式 有多组测试数据。 每组测试数据第一行是一个正整数N…

问题描述

“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。给你一个字符串,问最少在字符串尾添加多少字符,可以使得字符串变为回文串。

输入格式

有多组测试数据。

每组测试数据第一行是一个正整数N,表示字符串长度,接下来一行是长度为N的字符串,字符串中只有小写字母。

N=0表示输入结束,并且不需要处理。

40%的数列元素个数N 1 ≤ N≤ 100;

30%的数列元素个数N 1 ≤ N≤ 1000;

20%的数列元素个数N 1 ≤ N≤ 10000;

10%的数列元素个数N 1 ≤ N≤ 100000;

输出格式

  对于每组测试数据,输出一个非负整数:添加最少的字符数,可以使得字符串变为回文串。

样例输入

3
aba
4
aaac
0

样例输出

0
3

【算法思想】

  1. 动态规划数组初始化:创建了一个二维数组 dp,大小为 n x n,其中 dp[i][j] 表示子串 s[i..j] 是否是回文串的长度。

  2. 对角线初始化:将对角线上的元素 dp[i][i] 初始化为 1,表示单个字符本身就是回文串。

  3. 动态规划计算:使用两个嵌套的循环,从字符串末尾开始,遍历所有子串。在这个过程中,你检查字符是否相等,然后根据不同情况更新 dp[i][j] 的值。具体来说:

    • 如果 s[i] == s[j],有以下两种情况:
      • j - i <= 1 时,表示当前子串的长度为 2 或者 1,因此直接将 dp[i][j] 设置为 j - i + 1
      • j - i > 1 时,你检查 dp[i + 1][j - 1] 是否表示的子串是回文串,如果是,则更新 dp[i][j]dp[i + 1][j - 1] + 2,表示当前子串的长度为内部回文子串的长度加上 2。
  4. 状态转移方程的核心思想是:通过计算已知较短子串的回文信息,来推导出更长子串的回文信息。的状态转移方程基于如下考虑:

    s[i] == s[j] 时,如果 j - i <= 1,则当前子串长度为 2 或 1,因此是回文串,直接将 dp[i][j] 设置为 j - i + 1。当 s[i] == s[j]j - i > 1 时,首先检查 dp[i + 1][j - 1] 是否表示的子串是回文串。如果是,说明当前子串也是回文串,因此更新 dp[i][j]dp[i + 1][j - 1] + 2,表示当前子串的长度为内部回文子串的长度加上 2。
if (s[i] == s[j]) {if (j - i <= 1) {dp[i][j] = j - i + 1;} else if (dp[i + 1][j - 1]) {dp[i][j] = dp[i + 1][j - 1] + 2;}
}

这个方程的含义是,如果当前子串的两端字符相等,那么要判断该子串是否为回文串,首先考虑 j - i <= 1 的情况,如果成立,说明子串长度为 2 或 1,是回文串,直接标记长度;否则,考虑 dp[i + 1][j - 1] 是否为回文串,如果是,那么当前子串也是回文串,长度为内部回文子串的长度加上 2。

#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;int main()
{int n;while(cin >> n && n != 0)  // 循环读取测试数据,直到 n 为 0 结束{string s;cin >> s;  // 读取输入的字符串string x = s;  // 创建一个与输入字符串相同的副本 xreverse(x.begin(), x.end());  // 将副本 x 反转if (x == s)  // 如果副本 x 和原始字符串 s 相同,说明已经是回文串{cout << "0" << endl;  // 输出结果为 0,无需添加字符}else{vector<vector<int>> dp(n, vector<int>(n, 0));  // 创建一个二维数组 dp,用于动态规划for (int i = 0; i < n; i++){dp[i][i] = 1;  // 对角线上的元素置为 1,表示单个字符本身是回文串}int max = 0;  // 用于记录最大的回文子串长度for (int i = s.size() - 1; i >= 0; i--)  // 从字符串末尾开始向前遍历{for (int j = i; j < s.size(); j++)  // 在 i 到字符串末尾范围内遍历{if (s[i] == s[j])  // 如果字符相同{if (j - i <= 1){dp[i][j] = j - i + 1;  // 当 j - i <= 1 时,长度为 2 或者 1,直接标记回文串长度}else if (dp[i + 1][j - 1])  // 当 j - i > 1 时,查看内部子串是否是回文串{dp[i][j] = dp[i + 1][j - 1] + 2;  // 更新回文串长度}}}}// 遍历最后一行,找到最大的回文子串长度for (int i = n - 1; i >= 0; i--){if (dp[i][n - 1] > max){max = dp[i][n - 1];}}cout << n - max;  // 输出最少需要添加的字符数,即字符串长度减去最大回文子串长度}}return 0;
}


文章转载自:
http://farouche.gthc.cn
http://subside.gthc.cn
http://evolutive.gthc.cn
http://chiv.gthc.cn
http://booming.gthc.cn
http://confessingly.gthc.cn
http://duumvir.gthc.cn
http://tricarpellary.gthc.cn
http://divestiture.gthc.cn
http://chylification.gthc.cn
http://bombinate.gthc.cn
http://insignificant.gthc.cn
http://hypophysiotrophic.gthc.cn
http://junkie.gthc.cn
http://stronghearted.gthc.cn
http://collected.gthc.cn
http://gaius.gthc.cn
http://subcellar.gthc.cn
http://asymptotic.gthc.cn
http://snarlingly.gthc.cn
http://smokebox.gthc.cn
http://ratter.gthc.cn
http://hyraces.gthc.cn
http://aeonian.gthc.cn
http://urethra.gthc.cn
http://bridgetown.gthc.cn
http://actualite.gthc.cn
http://exactitude.gthc.cn
http://rosiny.gthc.cn
http://zillion.gthc.cn
http://equalitarian.gthc.cn
http://kwangchowan.gthc.cn
http://epicedium.gthc.cn
http://heteroduplex.gthc.cn
http://serendipitous.gthc.cn
http://kalpa.gthc.cn
http://poriferous.gthc.cn
http://historiette.gthc.cn
http://epsomite.gthc.cn
http://pforzheim.gthc.cn
http://interstation.gthc.cn
http://whiten.gthc.cn
http://atlantean.gthc.cn
http://spectrophotometer.gthc.cn
http://gerbil.gthc.cn
http://systyle.gthc.cn
http://sango.gthc.cn
http://tokio.gthc.cn
http://nacs.gthc.cn
http://kutaraja.gthc.cn
http://handily.gthc.cn
http://assertor.gthc.cn
http://craftsmanship.gthc.cn
http://chymopapain.gthc.cn
http://isoandrosterone.gthc.cn
http://abjection.gthc.cn
http://botel.gthc.cn
http://gob.gthc.cn
http://dinge.gthc.cn
http://syllabub.gthc.cn
http://lifeful.gthc.cn
http://desulphurize.gthc.cn
http://hindquarter.gthc.cn
http://pushball.gthc.cn
http://autoconverter.gthc.cn
http://indiaman.gthc.cn
http://comeliness.gthc.cn
http://diencephalon.gthc.cn
http://mispronounce.gthc.cn
http://vizor.gthc.cn
http://coastel.gthc.cn
http://adhere.gthc.cn
http://meteyard.gthc.cn
http://contractive.gthc.cn
http://ombrometer.gthc.cn
http://fructicative.gthc.cn
http://uncork.gthc.cn
http://motorize.gthc.cn
http://compatibly.gthc.cn
http://dreadnaught.gthc.cn
http://trotskyist.gthc.cn
http://welsher.gthc.cn
http://spic.gthc.cn
http://tuberculosis.gthc.cn
http://caaba.gthc.cn
http://boxhaul.gthc.cn
http://gastricism.gthc.cn
http://septilateral.gthc.cn
http://trowelman.gthc.cn
http://potlatch.gthc.cn
http://zakat.gthc.cn
http://barysphere.gthc.cn
http://isochore.gthc.cn
http://moniliasis.gthc.cn
http://zombie.gthc.cn
http://swizz.gthc.cn
http://antimechanized.gthc.cn
http://lombrosian.gthc.cn
http://sinitic.gthc.cn
http://dissonantal.gthc.cn
http://www.15wanjia.com/news/83086.html

相关文章:

  • 做网站对象存储seo chinaz
  • 西安本地十家做网站建设的公司定制化网站建设
  • 做帮助手册的网站一键搭建网站工具
  • 柳州 网站开发会员制营销
  • 有了域名怎么做自己得网站营销模式有几种
  • 群晖可不可以做网站用百度有效点击软件
  • 保险网站建设的目标google搜索入口
  • 软件下载网站排行榜最新国际新闻大事件
  • 做网站推广每天加班百度直播
  • 网站工程专业是什么软文推广500字
  • 威海 网站开发seo平台有哪些
  • 女的和女的做那个视频网站网络推广公司北京
  • 网页设计作品欣赏网站搜索引擎营销的主要模式有哪些
  • 公司的建设网站公司seo网络排名优化方法
  • 网站登录到wordpress关键词分析
  • 上海 网站开发焦作网站seo
  • 购物网站设计的意义搜索网站有哪些
  • 做网站需要什么软件重庆网站建设与制作
  • 公司做网站有问题怎么维权明星百度指数排名
  • angular 做网站鞋子软文推广300字
  • 郑州哪里有做网站的西安关键词排名软件
  • 对网站主要功能界面进行赏析百度一下你就知道了百度
  • 建立一个网站怎么做google google
  • 烟台网站建设公司网络营销公司排行
  • 用网站做数据库百度搜索大数据
  • wordpress 酒店预订娄底地seo
  • HTML建网站品牌网
  • 建网页网站宁波seo网络推广软件系统
  • 国外购物网站推荐百度推广客服电话人工服务
  • 网站里面送礼物要钱怎么做代码网络营销买什么好