POJ2250 Compromise(dp)

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

题目链接:点击打开链接


给出两段字符串数组, 每段以"#"结尾,  要求输出两段字符串数组最长的公共字符串.

lcs题目, 增加了一个flag数组保存字符串比较结果, 用于最后递归数据答案.


AC代码:

#include "iostream"
#include "cstdio"
#include "cstring"
#include "algorithm"
using namespace std;
const int MAXN = 105;
char s1[MAXN][MAXN], s2[MAXN][MAXN];
int dp[MAXN][MAXN], flag[MAXN][MAXN], len1, len2;
void lcs()
{
	for(int i = 1; i <= len1; ++i)
		for(int j = 1; j <= len2; ++j) {
			if(strcmp(s1[i - 1], s2[j - 1]) == 0) {
				dp[i][j] = dp[i - 1][j - 1] + 1;
				flag[i][j] = 1;
			}
			else {
				if(dp[i - 1][j] >= dp[i][j - 1]) {
					flag[i][j] = 2;
					dp[i][j] = dp[i - 1][j];
				}
				else {
					flag[i][j] = 3;
					dp[i][j] = dp[i][j - 1];
				}
			}
		}
}
void print(int x, int y)
{
	if(!x || !y) return;
	if(flag[x][y] == 1) {
		print(x - 1, y - 1);
		printf("%s ", s1[x - 1]);
	}
	else if(flag[x][y] == 2) print(x - 1, y);
	else print(x, y - 1);
}
int main(int argc, char const *argv[])
{
	while(scanf("%s", s1[0]) != EOF) {
		for(len1 = 1; ; ++len1) {
			scanf("%s", s1[len1]);
			if(strcmp(s1[len1], "#") == 0) break;
		}
		for(len2 = 0; ; ++len2) {
			scanf("%s", s2[len2]);
			if(strcmp(s2[len2], "#") == 0) break;
		}
		lcs();
		print(len1, len2);
		printf("\n");
	}
	return 0;
}


【嵌入式原理系列-第七篇】ld脚本实战:从零构建MCU内存布局 本文是一篇针对嵌入式开发者的实战指南,详细讲解了如何从零开始为MCU编写ld链接器脚本以构建自定义内存布局。文章以STM32F103C8T6为例,深入剖析了MEMORY和SECTIONS指令的用法,并提供了OTA分区、非易失数据存储等高级定制案例,帮助开发者解决实际工程中的Flash与RAM管理难题,实现对程序运行的深度掌控。 阅读详情

相关推荐

实测!Gemini+ChatGPT赋能学术写作:我的论文写作SOP(附提示词)

各位同仁好,我是七哥。一个在高校里从事人工智能相关领域研究,钻研用大模型AI实操的学术人。可以和七哥交流学术写作或Gemini、GPT、Claude等大模型学术实操相关问题,多多交流,相互成就,共同进步。为什么ChatGPT逻辑清晰却写不长?为什么Gemini能深入分析但废话连篇?这其实是两种模型架构的本质差异,GPT系列擅长指令跟随和语言精炼,而Gemini原生支持超长上下文,适合深度文本生成。两者在深度生成与精炼表达上形成了天然互补。我们可以将它们组合起来使用发挥他们各自的特长。

智能AI让学术科研更容易 491

POJ2250compromise) 解题报告

#include #include #include #include #include #include #include using namespace std; class DD { public: int count; string s; DD(); }; DD::DD() { count = 0; s = ""; } vector v1, v2; int main()

Bearox 编程之路 1054

如何对TBSS的结果进行统计学的分析,已完成置换检验,如何在最终的TBSS输出结果提取除具体值及如何做进一步相关性分析??

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1404

poj - 2250 题解

题意:魔改版的LCS问题。序列是单词序列 解法:原版LCS的序列元素是数字,想办法把数字替换成单词就解决了 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring> 5 #include<str...

dgr42861的博客 194

POJ2250【最长公共子序列】

#include #include #include char s1[210][41], s2[210][41],s3[210][41]; int dp[110][110] ; int max(int x, int y) { return x>y?x:y; } int main() { int i, j, k, l1, l2; char s[41]; int

乐着过一辈子的专栏 526

POJ 2250 Compromise(最长公共子序列LCS)

POJ 2250 Compromise(最长公共子序列LCS) http://poj.org/problem?id=2250 题意: 给你两段由空格分隔的语句, 要你求该两段语句的最长公共子序列. 且随便输出一个解即可. 注意每个单词需要看成我们一般处理字符串子序列的一个单独字符. 即每个单词是一个整体. 分析: 与往常计算最长公共子序列一样的方式即可. 然后用DFS输出序列即可.本题与POJ1458提供的解法本质一样. http://blog.csdn.net/u0134806

code 2108

poj_2250Compromise

Compromise Time Limit:1000MS Memory Limit:65536K Total Submissions:5074 Accepted:2314 Special Judge Description In a few months the European Currency Union will become a...

晚晴小筑 222

poj 2250 Compromise(裸LCS DP

Compromise Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6766   Accepted: 3023   Special Judge Description In a few months the European Currency Union

ysCover 702

poj 2250 Compromise(区间dp)

题目链接:http://poj.org/problem?id=2250 思路分析:最长公共子序列问题的变形,只是把字符变成了字符串,按照最长公共子序列的思路即可以求解。 代码如下: #include <stdio.h> #include <string.h> #define IsEqual(a, b) strcmp((a), (b)) =...

aqjh9999的博客 164

POJ2250 Compromise,map、dp

又到一年校赛时。。转眼已经大四。 奇葩的学校,校赛是个人赛。。其实我挺喜欢个人赛

Necs的小窝 694

poj2250 Compromise dp lcs 记录路径

Compromise Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5045   Accepted: 2297   Special Judge Description In a few months the European Currency Union will

Shirley 1640

poj 2250 CompromiseDP-LCS 记录路径)

Compromise Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6539   Accepted: 2929   Special Judge Description In a few months the European Currency Union wi

GODLINESS_ 551

poj 2250 Compromise dp lcs 路径输出

点击打开链接题目链接 Compromise Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6520   Accepted: 2922   Special Judge Description In a few months the European

776

Compromise - POJ 2250 UVa 531 dp

Compromise Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6398   Accepted: 2868   Special Judge Description In a few months the European Currency Union

提比的强行AC 612

POJ 2250 Compromise (线性dp LCS +递归路径)

POJ 2250 Compromise (线性dp LCS +递归路径)

Tc的专栏 1252

POJ 2250 Compromise 最长公共子序列LCS 动态规划DP

http://poj.org/problem?id=2250 最长公共子序列LCS 动态规划DP Compromise Time Limit:1000MS Memory Limit:65536K Special Judge Description In a few months the European Currency Unio...

soboer 91

POJ2250Compromise (最长公共子序列,DP

<br />POJ上边一直WA啊,找N久N久,找不到错误,看到的人求教育我啊。、。。。。<br />#include<cstdio> #include <string> #include <iostream> #include <cstring> #include <algorithm> using namespace std; int reslen[301][301]; int respos[300][301]; string st1[101],st2[101],resst[101];

三江小渡的专栏 550

poj 2250 Compromise dp求lcs+输出方案

//poj 2250 //sep9 #include using namespace std; struct WORD{ char s[32]; }a[128],b[128]; int dp[128][128],match[128][128]; void print(int x,int y) { if(x==0||y==0) return ; if(match[x][y]==0){

sepNINE的专栏 606

POJ2250 Compromise DP最长公共子序列

该题是一道最长公共子序列的DP

MY专栏 443

POJ 2250 Compromise (DP,最长公共子序列)

题意 求两端文本的最长公共子单词序列 直接lcs增量法可以得出 打印路劲也是直接递归就行

Good morning,good afternoon and good night 1171

POJ 2250CompromiseDP最长子公共子序列)

                                                                         CompromiseTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 2452 Accepted: 1187 Special Jud

nextcy的专栏 651
上一篇: HDOJ1159 Common Subsequence(dp)
下一篇: Codeforces Round #325 (Div. 2) 586ABC题解
GKHack
博客等级 码龄11年 48粉丝 291原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值