求证,ac,但不知道对错。
查看原帖
求证,ac,但不知道对错。
1672970
Yishui_LightSky楼主2025/7/21 12:59
#include <iostream>
#include <vector>
#include <bits/stdc++.h>
#define mid size/2
#define pol *2+1
#define por *2+2
using namespace std; 
int res[2001][2001];
int dfs(string s,string p){
	if(res[s.size()][p.size()]!=0){
		return res[s.size()][p.size()];
	}
	if(s.size()==0&&p.size()==0){
		return 0;
	}
	if(s.size()==0){
		return p.size();
	}
	if(p.size()==0){
		return s.size();
	}
	if(s[0]==p[0]){
		int l= dfs(s.substr(1,s.size()-1),p.substr(1,p.size()-1));
		res[s.size()][p.size()]=l;
		return l;
	}
	int ans=1<<30;
	ans=min(ans,dfs(s,p.substr(1,p.size()-1)));
	ans=min(ans,dfs(s.substr(1,s.size()-1),p.substr(1,p.size()-1)));
	ans=min(ans,dfs(s.substr(1,s.size()-1),p));
	ans++;
	res[s.size()][p.size()]=ans;
	return ans;
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0); 
	string s1,s2;
	cin>>s1>>s2;
	cout<<dfs(s1,s2);
	return 0;
}

2025/7/21 12:59
加载中...