求助
查看原帖
求助
490484
include13_fAKe楼主2024/3/17 15:13
#include<iostream>
#include<cstdio>
#include<cstring>
#define int unsigned long long
using namespace std;

int f[1135][1135];
int g[1135][1135];
void solve(int T){
	memset(f,-1,sizeof(f));
	memset(g,-1,sizeof(g));
	string s1,s2;
	cin>>s1>>s2;
	int t1=s1.size();
	int t2=s2.size();
	s1=' '+s1;
	s2=' '+s2;
	g[0][0]=1;
	f[0][0]=0;
	for(int i=1;i<=t1;i++){
		f[i][0]=i;
		g[i][0]=1;
	}
	for(int i=1;i<=t2;i++){
		f[0][i]=i;
		g[0][i]=1;
	}
	for(int i=1;i<=t1;i++){
		for(int j=1;j<=t2;j++){
			if(s1[i]==s2[j]){
				f[i][j]=f[i-1][j-1]+1;
				g[i][j]=g[i-1][j-1];
			}
			else{
				if(f[i][j-1]==f[i-1][j]){
					g[i][j]=g[i-1][j]+g[i][j-1];
					f[i][j]=f[i-1][j]+1;
				}
				else if(f[i][j-1]>f[i-1][j]){
					f[i][j]=f[i-1][j]+1;
					g[i][j]=g[i-1][j];
				}
				else{
					f[i][j]=f[i][j-1]+1;
					g[i][j]=g[i][j-1];
				}
			}
		}
	}
	cout<<"Case #"<<T<<": "<<f[t1][t2]<<' '<<g[t1][t2]<<endl;
	return;
}
int T;
signed main(){
	cin>>T;
	for(int i=1;i<=T;i++)	solve(i);
	return 0;
}
2024/3/17 15:13
加载中...