UVA 10795 A Different Task
来源:互联网 发布:js div滚动条回到顶部 编辑:程序博客网 时间:2024/05/01 04:31
刘汝佳书上的题目,思想和书上写的一样的,就不再赘述了,感觉这个想法很精妙,开始还想bfs,但是仔细一想暴力解法太耗时,最后必然超时。
#include <stdio.h>int start[61];int final[61];//把盘子1,2,3,4....n从state状态全部移动到柱子target所用的最少的步数long long f(int *state, int n, int target){if(0 == n)return 0;else{if(state[n] == target)return f(state, n-1, target);elsereturn f(state, n-1, 6-state[n]-target) + (1LL<<(n-1));}}void func(int n){int k;long long ans;static int case_n = 1;for(k=n; k>=1; k--){if(start[k] != final[k])break;}if(0 == k){ans = 0;printf("Case %d: %lld\n", case_n++, ans);return;}ans = f(start, k-1, 6-start[k]-final[k]) + 1 + f(final, k-1, 6-start[k]-final[k]);printf("Case %d: %lld\n", case_n++, ans);}int main(void){int n, i;//freopen("input.dat", "r", stdin);while(scanf("%d", &n), n){for(i=1; i<=n; i++) scanf("%d", start+i);for(i=1; i<=n; i++) scanf("%d", final+i);func(n);}return 0;}
0 0
- Uva 10795 A Different Task
- Uva-10795-A Different Task
- uva 10795 A Different Task
- UVA 10795 A Different Task
- UVA 10795 A Different Task
- Uva 10795 - A Different Task
- UVA - 10795 A Different Task
- Uva 10795 A Different Task
- Uva 10795 A Different Task
- UVA 10795 A Different Task
- UVA - 10795 A Different Task
- UVA 10795 A Different Task
- UVA 10795 A Different Task
- uva 10795 - A Different Task(递归)
- UVA 10795 - A Different Task(递归)
- uva 10795 - A Different Task(递归)
- UVA - 10795 A Different Task 汉诺塔
- Uva 10795 - A Different Task 【模拟】
- Ubuntu10.04下装sun-java6-jdk
- Linux 修改inittab导致系统无法启动修复
- APUE 学习笔记——线程控制
- 通知中心
- 逆序输出链表
- UVA 10795 A Different Task
- extern使用小结
- IMSdroid知识贴大集锦
- Linux下修改网卡名称的方法
- 反转链表
- SQL高级优化之常用的优化策略-1(The Return Of The King)
- java 使用htmlunit模拟登录爬取新浪微博页面
- 真机调试Android
- Effective C++:条款11:在operator= 中处理“自我赋值”。