恶臭LCS

若如初见. 提交于 2019-12-01 07:06:17

今天(2019/10/13)考的题目,用学长写的能让人崩溃的LCS改编的

 

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; 
const int mod=100000000;
const int maxn=5005;
char a[maxn], b[maxn];
int f[2][maxn],g[2][maxn];
int main() {
	scanf("%s",a+1);
	scanf("%s",b+1);
	int n=strlen(a+1)-1, m=strlen(b+1)-1;
	g[1][0]=1;
	for(int j=0;j<=m;j++)
		_____1_____;
	for(int i=1;i<=n;i++)
	{
		int now=i&1,pre=now^1;
		for(int j=1; j<=m; j++)
		{
			f[now][j]=_____2_____;
			if(a[i]==b[j])
			{
				f[now][j]=_____3_____;
				if(f[now][j]==f[pre][j-1]+1)
					g[now][j]=g[pre][j-1];
			}
			else
			{
				g[now][j]=0;
				if(f[now][j]==f[pre][j-1])
					g[now][j]-=g[pre][j-1]; 
			}
			if(f[now][j]==f[pre][j])
				g[now][j]=_____4_____;
			if(f[now][j]==f[now][j-1])
				g[now][j]=_____5_____;
		}
	}
	printf("%d\n%d",f[n&1][m],g[n&1][m]);
	return 0;
}
1.1上述程序___1___中应该填写()
A.g[0][j]=0  B.g[j][0]=0  C.g[0][j]=1  D.g[j][0]=1
1.2 上述程序___2___中应该填写()
A.min(f[pre][j-1],f[now][j-1])  B.max(f[pre][j] f[now][j])  C.max(f[pre][j],f[now][j-1])  D.max(f[now][j],f[pre][j-1])
1.3 上述程序___3___中应该填写()
A.min(f[pre][j-1],f[now][j-1]+1)  B.max(f[pre][j],f[now][j]+1)  C.max(f[pre][j],f[now][j-1]+1)  D.max(f[now][j],f[pre][j-1]+1)
1.4 上述程序___4___中应该填写()
A.(g[now][j]+g[pre][j-1])%mod	B.(g[now][j-1]+g[pre][j])%mod	C.(g[now][j]+g[pre][j])%mod	D.(g[now][j-1]+g[pre][j-1])%mod
1.5 上述程序___5___中应该填写()
A.(g[now][j]+g[pre][j-1])%mod	B.(g[now][j-1]+g[pre][j])%mod	C.(g[now][j]+g[pre][j])%mod	D.(g[now][j-1]+g[pre][j-1])%mod

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!