Welcome

首页 / 软件开发 / 数据结构与算法 / UVa 12261 High Score:贪心&“向左走,向右走”

UVa 12261 High Score:贪心&“向左走,向右走”2014-07-25

12261 - High Score

Time limit: 3.000 seconds

http://uva.onlinejudge.org/index.php?option=onlinejudge&Itemid=99999999&category=244&page=show_problem&problem=3413

思路:注意名字中有若干个A的情况,这时对每串连续的A进行“向左走,向右走”的判断,取所有情况中的最小值输出即可。

完整代码:

/*0.016s*/#include<bits/stdc++.h>using namespace std;char str[1001];int main(){int t, sum, len, i, j, ans;scanf("%d
", &t);while (t--){gets(str);sum = 0, len = strlen(str);for (i = 0; i < len; ++i)sum += min(str[i] - "A", 26 - (str[i] - "A"));ans = sum + len - 1;for (int i = 1; i < len; i++){if (str[i] == "A"){for (j = i + 1; j < len && str[j] == "A"; ++j);ans = min(ans, sum + min(((i - 1) << 1) + len - j, ((len - j) << 1) + i - 1));}}printf("%d
", ans);}}
作者:csdn博客 synapse7