UVA 10795 A Different Task(递归 状态转移)
2015-02-08 12:31
323 查看
解析见刘汝佳的《算法竞赛入门经典训练指南》P27
[code]#include <cstdio> #include <cstring> typedef long long ll; const int N = 65; int n, start , finish ; ll f(int p[],int i,int fin) { if(i == 0) return 0; if(p[i] == fin) return f(p,i-1,fin); return f(p,i-1,6-p[i]-fin) + (1LL << (i-1)); } int main() { int cas = 1; while(scanf("%d",&n) != EOF && n) { for(int i = 1; i <= n; i++) { scanf("%d",&start[i]); } for(int i = 1; i <= n; i++) { scanf("%d",&finish[i]); } int k = n; while(k >= 0 && finish[k] == start[k]) { k--; } ll ans = 0; if(k >= 1) { int other = 6 - start[k] - finish[k]; ans = f(start,k-1,other) + f(finish,k-1,other) + 1; } printf("Case %d: %lld\n",cas++,ans); } return 0; }
相关文章推荐
- uva 10795 - A Different Task(递归)
- UVa 10795 A Different Task (递归)
- UVA 10795 - A Different Task(递归)
- uva10795 - 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(思维+递归)
- 例1.11 新汉诺塔问题 A Different Task UVA - 10795 中间状态+逆向思维
- uva 10795 - A Different Task(递推,3级)
- 【汉诺塔问题】UVa 10795 - A Different Task
- uva 10795 - A Different Task(递推,3级)
- Uva 10795 A Different Task
- uva10795 A Different Task
- (06-09补)Uva 10795 A Different Task 新汉诺塔游戏(递推)