2013年4月22日

uva10795 - A Different Task(新汉诺塔问题)

摘要: 这个题不同的是开始状态不规则,目标状态也不规则我们这里有个折中的方法,就是从开始和目标两个状态同时向一个参考状态移动。我们分析这个问题,会发现我们必须先把最大的圆盘放到目标位置,所以目前位置s和目标位置p上都不能存在其他比当前圆盘小的圆盘,然后把最大的圆盘从s移动到p上,所以ans等于把其他的圆盘从s移动到中转位置的步骤数step1加上把其他的圆盘从p移动到中转位置的步骤数step2再加上1所以ans = step1+step2+1;其他的移动方式和经典的汉诺塔差不多了,不过我们发现总共3个位置,要想把其他的圆盘移动到中转位置上,s和p位置上除了当前圆盘外都是空的,那么中转位置上肯定是有序的, 阅读全文
posted @ 2013-04-22 20:51 Primo... 阅读(236) 评论(0) 推荐(0)

UVA11384 - Help is needed for Dexte(正整数序列)

摘要: 大水题,自己在纸上算几个值就能看出规律。代码如下:#include int fun(int n) { if(n==1) return 1; return fun(n/2)+1; } int main () { int n; while(scanf("%d",&n)==1) printf("%d\n",fun(n)); return 0; } 阅读全文
posted @ 2013-04-22 19:33 Primo... 阅读(120) 评论(0) 推荐(0)