题目:https://www.luogu.com.cn/problem/P8013
代码:
#include <bits/stdc++.h>
using namespace std;
string n,m;
int moo['Z'+10];
int main(){
cin>>n>>m>>moo['A']>>moo['C']>>moo['G']>>moo['T'];
int min1=0,len=n.size();
int l=0,r=0;
while(r<len){
if(n[l]!=m[r]) min1+=moo[m[r]],r++;
else l++,r++;
}
for(int i=0;i<len;i++){
int mo=0;
l=i,r=0;
while(r<len){
if(n[l]!=m[r]) mo+=moo[m[r]],r++;
else l++,r++;
}
min1=min(min1,mo);
}
cout<<min1;
return 0;
}
样例过了 3个WA
【以下回答由 GPT 生成】
这段给定的C++代码中存在一些问题。以下是对代码的问题进行识别和优化的步骤:
下面是优化后的代码:
#include <bits/stdc++.h>
using namespace std;
int moo[26];
int main(){
string n,m;
cin>>n>>m;
for(char c='A'; c<='Z'; c++){
cin >> moo[c-'A'];
}
int min1=0,len=n.size();
int l=0,r=0;
while(r<len){
if(n[l]!=m[r]){
min1+=moo[m[r]-'A'];
}
r++;
l++;
}
for(int i=0;i<len;i++){
int mo=min1;
l=i,r=0;
while(r<len){
if(n[l]!=m[r]){
mo+=moo[m[r]-'A'];
}
r++;
l++;
}
min1=min(min1,mo);
}
cout<<min1;
return 0;
}
这样优化后的代码应该可以解决之前出现错误的测试用例。