蓝桥-BASIC-19-完美的代价
2017-05-31 23:40
190 查看
ACM模版
先从左往右选取左侧元素,然后从右侧开始往左侧查找匹配元素,每次找到后都移动到对称位置,累加移动次数即可……典型的贪心。
这个题远远没有想象中那么麻烦~~~
描述
题解
这个题一开始想岔了,一说交换最少次数使序列怎么样,我就想到了最少交换次数使序列有序的经典算法,想着可能是这个经典算法的一个变种,后来发现并不是这样的,其实只是一个简单的贪心就能解决的问题。先从左往右选取左侧元素,然后从右侧开始往左侧查找匹配元素,每次找到后都移动到对称位置,累加移动次数即可……典型的贪心。
这个题远远没有想象中那么麻烦~~~
代码
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int MAXN = 8888; int n; char s[MAXN]; int main() { scanf("%d%s", &n, s); int sum = 0, flag = 1, tag = -1; int len = n - 1; for (int i = 0; i < len; i++) { for (int j = len; j >= i; j--) { if (j == i) { if (n % 2 == 0 || tag != -1) { flag = 0; break; } tag = 1; sum += n / 2 - i; break; } if (s[j] == s[i]) { for (int t = j; t < len; t++) { s[t] = s[t + 1]; } sum += len - j; len--; break; } } if (!flag) { break; } } if (!flag) { printf("Impossible\n"); } else { printf("%d\n", sum); } return 0; }
相关文章推荐
- 蓝桥-BASIC-19 完美的代价
- 蓝桥杯 BASIC-19 基础练习 完美的代价 Java版
- 蓝桥杯练习题 BASIC-19 完美的代价(贪心算法)
- 蓝桥杯BASIC-19(完美的代价)
- BASIC-19 VIP试题 完美的代价
- 基础练习 BASIC-19 完美的代价
- 蓝桥杯 BASIC-19 基础练习 完美的代价(有贪心特点)
- [BASIC-19] 完美的代价
- 蓝桥杯 BASIC-19 基础练习 完美的代价
- [BASIC-19] - 完美的代价 (Unsolved)
- BASIC18-21 矩形面积交 完美的代价 数的读法 Sine之舞
- 基础练习 完美的代价
- 基础练习 完美的代价
- 蓝桥杯 基础练习 完美的代价
- 基础练习 完美的代价
- 完美的代价----蓝桥杯(一道有点启发的题目!)
- 【Tisinsen1043】完美的代价(字符串+树状数组)
- 完美的代价
- (蓝桥杯)基础练习 完美的代价
- 蓝桥-BASIC-22 FJ的字符串