题目网址: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 }