有疑惑想请大佬解答
查看原帖
有疑惑想请大佬解答
494867
Kyran2012楼主2023/7/31 22:38

这题我最开始用来实现第一个功能(求最长公共子序列)的代码是这样的:

#include <iostream>
using namespace std;

int dp[5005][5005];

signed main()
{
	string x, y;
	int lenx, leny;
	getline(cin, x);
	getline(cin, y);
	x = x.substr(0, x.size()-1); // 看这里
	lenx = x.size();
	x = ' ' + x;
	y = y.substr(0, y.size()-1);
	leny = y.size();
	y = ' ' + y;
	for (int i = 1; i <= lenx; i++)
	{
		for (int j = 1; j <= leny; j++)
		{
			dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
			if (x[i] == y[j])
			{
				dp[i][j] = max(dp[i][j], dp[i-1][j-1]+1);
			}
		}
	}
	cout << dp[lenx][leny];
	return 0;
}

结果发现不知道为什么x会保留了句号,但是y不会。有没有大佬教一教本蒟蒻这是什么原理?

2023/7/31 22:38
加载中...