题目网址: http://codeforces.com/contest/1151/problem/A
题目大意: 给定一个由大写字母构成的字符串和它的长度, 有这样的操作, 使任意一个字母变成与其相邻的字母, 默认 A 与 Z 相邻, 问最少多少次操作使得有字串是 ACTG?
题解: 数据量小, 暴力即可, 即从左向右扫, 四个一组进行判断, 注意, 扫到 Z 要分析两种情况.
- #include<bits/stdc++.h>
- #define ll long long
- using namespace std;
- string a="ACTG";
- int main()
- {
- int n,ans=0,res=1000;
- string s;
- cin>>n;
- cin>>s;
- for(int i=0;i<=n-4;i++) {
- ans=0;
- for(int j=0;j<=3;j++) {
- ans+=min(abs(s[i+j]-a[j]),26-abs(s[i+j]-a[j]));
- }
- res=min(res,ans);
- }
- cout<<res<<endl;
- return 0;
- }
- View Code
来源: http://www.bubuko.com/infodetail-3037484.html