博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SRM 698 div1 RepeatString
阅读量:5126 次
发布时间:2019-06-13

本文共 1283 字,大约阅读时间需要 4 分钟。

250pts RepeatString

题意:问最少修改多少次将一个字符串修改为AA的形式。可以插入一个字符,删除一个字符,修改字符。

思路:枚举分界点,然后dp一下。

1 /* 2 * @Author: mjt 3 * @Date:   2018-10-17 19:50:16 4 * @Last Modified by:   mjt 5 * @Last Modified time: 2018-10-17 20:08:04 6 */ 7 #include
8 using namespace std; 9 typedef long long LL;10 11 const int N = 1005;12 13 int f[N][N];14 15 class RepeatString{16 public:17 int solve(int p,string s) {18 memset(f, 0x3f, sizeof(f));19 string a, b;20 a += '#', b += '#';21 for (int i=0; i<=p; ++i) a += s[i];22 for (int j=p+1; j<(int)s.size(); ++j) b += s[j];23 for (int i=0; i<(int)a.size(); ++i) f[i][0] = i;24 for (int i=0; i<(int)b.size(); ++i) f[0][i] = i;25 26 for (int i=1; i<(int)a.size(); ++i) 27 for (int j=1; j<(int)b.size(); ++j) {28 f[i][j] = min(f[i][j], min(f[i - 1][j], f[i][j - 1]) + 1);29 f[i][j] = min(f[i][j], f[i - 1][j - 1] + (a[i] != b[j]));30 }31 return f[a.size() - 1][b.size() - 1];32 }33 int minimalModify(string s) {34 int ans = s.size();35 for (int i=0; i<(int)s.size(); ++i) ans = min(ans, solve(i, s));36 return ans - 1;37 }38 };

 

转载于:https://www.cnblogs.com/mjtcn/p/9806754.html

你可能感兴趣的文章
uva 387 A Puzzling Problem (回溯)
查看>>
12.2日常
查看>>
同步代码时忽略maven项目 target目录
查看>>
Oracle中包的创建
查看>>
团队开发之个人博客八(4月27)
查看>>
发布功能完成
查看>>
【原】小程序常见问题整理
查看>>
C# ITextSharp pdf 自动打印
查看>>
【Java】synchronized与lock的区别
查看>>
django高级应用(分页功能)
查看>>
【转】Linux之printf命令
查看>>
关于PHP会话:session和cookie
查看>>
STM32F10x_RTC秒中断
查看>>
display:none和visiblity:hidden区别
查看>>
C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现。
查看>>
牛的障碍Cow Steeplechase
查看>>
Zookeeper选举算法原理
查看>>
3月29日AM
查看>>
利用IP地址查询接口来查询IP归属地
查看>>
HTML元素定义 ID,Class,Style的优先级
查看>>