计算字符串的距离——动态规划
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | #include<iostream> #include<string.h> using namespace std; int dp[100][100]; int min( int a, int b) { if (a<b) return a; else return b; } int main() { char str1[100]; char str2[100]; cin>>str1>>str2; int num1 = strlen (str1); int num2 = strlen (str2); if (str1[0]==str2[0]) dp[0][0] = 0; else dp[0][0] = 1; for ( int i=1; i<num2; i++) { if (str1[0]==str2[i]) dp[0][i] = dp[0][i-1]; else dp[0][i] = dp[0][i-1] + 1; } for ( int i=1; i<num1; i++) { if (str1[0]==str2[i]) dp[i][0] = dp[i-1][0]; else dp[i][0] = dp[i-1][0] + 1; } for ( int i=1; i<num1; i++) { for ( int j=1; j<num2; j++) { if (str1[i]==str2[j]) { dp[i][j] = dp[i-1][j-1]; } else { int tmp; tmp = min(dp[i-1][j]+1, dp[i][j-1]+1); tmp = min(tmp, dp[i-1][j-1]+1); dp[i][j] = tmp; } } } cout<<dp[num1-1][num2-1]; return 0; } |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· C# 13 中的新增功能实操
· Supergateway:MCP服务器的远程调试与集成工具
· Vue3封装支持Base64导出的电子签名组件