UVa 10570 - Meeting with Aliens(构造法)
2015-07-25 19:18
344 查看
将序列储存两遍,用数组代替环,然后枚举起点,每次都把当前数交换过来,即可得到答案。
#include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int maxn = 1010; const int inf = 0x3f3f3f3f; int a[maxn], b[maxn]; int main() { int n; while(~scanf("%d", &n) && n) { for(int i = 1; i <= n; ++i) scanf("%d", &a[i]), a[n + i] = a[i]; int ans = inf, cur = 0; for(int i = 1; i <= n; ++i) { memcpy(b, a, sizeof(a)); cur = 0; for(int j = 1; j <= n && cur < ans; ++j) { int k = i + j - 1; if(b[k] != j) { ++cur; int pos = k + 1; while(pos < i + n) { if(b[pos] == j) {swap(b[k], b[pos]); break;} ++pos; } } } ans = min(ans, cur); memcpy(b, a, sizeof(a)); cur = 0; for(int j = n; j >= 1 && cur < ans; --j) { int k = i + n - j; if(b[k] != j) { ++cur; int pos = k + 1; while(pos < i + n){ if(b[pos] == j) {swap(b[k], b[pos]); break;} ++pos; } } } ans = min(ans, cur); } printf("%d\n", ans); } return 0; }
相关文章推荐
- vps mark
- st3插件之emmet的强大
- HDU 1018.Big Number【7月25】
- Struts基础
- win7平台下vs2013配置opencv3.0
- python下PCA算法与人脸识别
- shell 学习笔记1501-1800
- UVa 12034 - Race(组合+递推)
- 中兴软创Java实习生面试题目
- shell 学习笔记1501-1800
- 学习笔记——多线程
- 多线程入门教程(六)综合实例
- xtJS textField 关于验证(Regex)的一些属性说明
- 插入一个数
- ICCV、CVPR、ECCV、ICML、NIPS qq深度交流群,欢迎大家来交流
- open("/dev/mem ",O_RDWR | O_SYNC)
- 字符串的操作:取字符, 替换字符,字符拼接,转换,插入字符等
- 得到滑动条的宽度
- 关于android中layout_gravity和gravity对View的影响
- Library用法&SlidingMenu简介