Codeforces Round #553 (Div. 2) A题

题目网址:http://codeforces.com/contest/1151/problem/A

题目大意:给定一个由大写字母构成的字符串和它的长度,有这样的操作,使任意一个字母变成与其相邻的字母,默认A与Z相邻,问最少多少次操作使得有字串是ACTG?

题解:数据量小,暴力即可,即从左向右扫,四个一组进行判断,注意,扫到Z要分析两种情况。

 1 #include<bits/stdc++.h>
 2 #define ll long long
 3 using namespace std;
 4 string a="ACTG";
 5 int main()
 6 {
 7     int n,ans=0,res=1000;
 8     string s;
 9     cin>>n;
10     cin>>s;
11     for(int i=0;i<=n-4;i++) {
12         ans=0;
13         for(int j=0;j<=3;j++) {
14             ans+=min(abs(s[i+j]-a[j]),26-abs(s[i+j]-a[j]));
15         }
16         res=min(res,ans);
17     } 
18     cout<<res<<endl;
19     return 0;
20 } 
View Code

猜你喜欢

转载自www.cnblogs.com/duxing201806/p/10778071.html