为什么+1就过了
查看原帖
为什么+1就过了
305002
vegetable_ste楼主2021/8/17 21:45
#include <bits/stdc++.h>
using namespace std;
const int N = 2010;
char s1[N], s2[N];
int dp[N][N];
int solve(int p1, int p2) {
	if(p1 < 0) return p2; // 边界勿忘
	if(p2 < 0) return p1;
	if(dp[p1][p2] < 1e9) return dp[p1][p2];
	if(s1[p1] == s2[p2]) dp[p1][p2] = min(dp[p1][p2], solve(p1 - 1, p2 - 1));
	else dp[p1][p2] = min(dp[p1][p2], solve(p1 - 1, p2 - 1) + 1);
	dp[p1][p2] = min(dp[p1][p2], min(solve(p1 - 1, p2) + 1, solve(p1, p2 - 1) + 1));
	return dp[p1][p2];
}
int main() {
	memset(dp, 0x3f, sizeof dp);
	scanf(" %s %s", s1, s2);
	printf("%d\n", 1 + solve(strlen(s1), strlen(s2)));
	return 0;
}

难道是因为下标从0开始?

2021/8/17 21:45
加载中...