文章

15

粉丝

39

获赞

140

访问

6.1k

头像
求解:哪里错了捏只有75%通过率
P1627 上海交通大学机试题
发布于2025年2月27日 19:27
阅读数 222

#include<bits/stdc++.h>
using namespace std;

int main(){
	string a,b;
	while(cin>>a>>b){
		int x=0,y=0;
		int l1=a.length();
		int l2=b.length();
		vector<vector<int> > dp(l1+1,vector<int>(l2+1,0));
		for(int i=1;i<=l1;i++){
			for(int j=1;j<=l2;j++){
				if(a[i]<='9' && a[i]>='0') {dp[i][j]=dp[i-1][j];continue;}
				else if(b[j]<='9' && b[j]>='0')  {dp[i][j]=dp[i][j-1];continue;}
				if(a[i-1]==b[j-1]) {
					dp[i][j]=dp[i-1][j-1]+1;
					if(dp[x][y]<dp[i][j]){
						x=i;y=j;
					}
				}
				else {
					dp[i][j]=0;
				}
			}
		}
		for(int i=0;i<dp[x][y];i++){
			cout<<a[x-dp[x][y]+i];
		}
		cout<<endl;
	}
		
} 

 

登录查看完整内容


登录后发布评论

1 条评论
xiaofan618
2025年3月23日 10:51

for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
			{
				if(s1[i-1]>='0'&&s1[i-1]<='9')
				{
					dp[i][j]=0;
				}
				else if(s1[i-1]==s2[j-1])
				{
					dp[i][j]=dp[i-1][j-1]+1;
				}
				else
				dp[i][j]=0;
			}
		}

 

赞(0)