X星人的基因——题解
Posted _23_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了X星人的基因——题解相关的知识,希望对你有一定的参考价值。
题目:
样例输入:
8
A B C D E A B C
A C C D C B A E
6
A B C D E E
A E D C B B
0
样例输出:
思路:这题比较简单,就是先用动态规划求出最长公共子序列,再进行计算
Yes
Yes
#include<iostream>
#include<cmath>
using namespace std;
char a[10010],b[10010];
int dp[1010][1010]={0};
int main(){
int n;
while(cin>>n&&n){
for(int i=0;i<n+10;i++){ //初始化
for(int j=0;j<n+10;j++){
dp[i][j]=0;
}
}
for(int i=0;i<n;i++) cin>>a[i]; //输入
for(int i=0;i<n;i++) cin>>b[i];
for(int i=0;i<n;i++){ //动态规划求出最长公共子序列
for(int j=0;j<n;j++){
if(a[i]==b[j]){
dp[i][j]=dp[i-1][j-1]+1;
}
else {
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
}
}
}
int num=dp[n-1][n-1]; //进行计算
double nu=(double)num/n;
// cout<<num<<endl;
if(nu>0.5) cout<<"No"<<endl; //判断输出结果
else cout<<"Yes"<<endl;
}
return 0;
}
以上是关于X星人的基因——题解的主要内容,如果未能解决你的问题,请参考以下文章
湖南中医药大学信息科学与工程学院第四届大学生程序设计竞赛——正式赛题解
湖南中医药大学信息科学与工程学院第四届大学生程序设计竞赛——正式赛题解