湖州师范学院100822实验二递归与分治(二).docxVIP

  • 7
  • 0
  • 约7.41千字
  • 约 13页
  • 2017-10-03 发布于重庆
  • 举报

湖州师范学院100822实验二递归与分治(二).docx

湖州师范学院100822实验二递归与分治(二)

实验二递归与分治(二)一、实验目的 1、进一步理解递归和分治策略的基本思想。 2、进一步掌握递归与分治策略结合使用的算法设计技巧。二、实验要求 1、通过试题的设计实验,掌握递归设计以及算法效率分析。 2、通过试题的设计实验,掌握递归与分治算法设计以及算法效率分析。三、实验内容和步骤(一)实验1 1、实验题目 … 2、上机过程①算法设计说明用来说明算法设计的基本思想、算法的复杂性分析。它包括:设计的基本思想、数据的输入(前提条件)和输出(后置条件)、设计方法、数据结构、数据说明以及算法的复杂性分析说明等。②程序框图 …③程序清单 …④本题小结它包括:上机时遇到的问题及解决方法,观察到的现象及其分析,对算法设计技巧的总结及分析等;程序的输出结果及对结果的分析;实验的心得体会等。(二)实验2同上 …实验报告完成人:年月日Problem A:再次Hanoi塔问题Time Limit:2000MS Memory Limit:65536KTotal Submit:249 Accepted:164 Description 古老的汉诺塔问题是:用最少的步数将N个半径互不相等的圆盘从l号柱利用2号柱全部移动到3号柱,在移动的过程中小盘要始终在大盘的上面。现在再加上一个条件:不允许直接把盘从l号柱移动到3号柱,也不允许直接把盘从3号柱移动到1号柱。把盘按半径从小到大用1~N编号。每种状态用N个整数表示,第i个整数表示i号盘所在的柱的编号。则N=2时的移动方案为(1,1)≥(2,1)≥(3,1)≥(3,2)≥(2,2)≥(1,2)≥(1,3)≥(2,3)≥(3,3) 初始状态为第O步,编程求在某步数时的状态。Input 输入的第1行为整数T(1≤T≤50000),表示输入数据的组数。接下来的丁行,每行有两个整数N,M(1≤N≤19,O≤M ≤移动N个圆盘所需的步数)。Output 输出共有T行。对于每组输入数据,输出N个整数表示移动N个盘在M步时的状态,每两个数之间用一个空格隔开,行首和行末不要有多余的空格。Sample Input 42 02 53 03 1Sample Output 1 11 21 1 12 1 1#include iostreamusing namespace std;int f[20],ans[20];void Compute(int n,int m,int s,int anx,int d){if(n==0)return;if(m=f[n-1]){ans[n]=s;Compute(n-1,m,s,anx,d);return;}if(m=2*f[n-1]+1){ans[n]=anx;Compute(n-1,m-(f[n-1]+1),d,anx,s);return;}ans[n]=d;Compute(n-1,m-(2*f[n-1]+2),s,anx,d);return;}int main(){int t,n,m,i;f[0]=0;for(i=1;i=19;i++)f[i]=f[i-1]*3+2;scanf(%d,t);while(t--){scanf(%d%d,n,m);Compute(n,m,1,2,3);for(i=1;i=n;i++)printf(i==1?%d: %d,ans[i]);printf(\n);}return 0;}Problem B:Gray codeTime Limit:2000MS Memory Limit:65536KTotal Submit:628 Accepted:377 Description Gray code is an interesting code sequence and has many applications in computer science.No matter you have known it before or not, here are some introductions about its features: (1) Gray code has 2^n unique elements; (2) Each element contains n digits of O or l; (3) Each pair of adjacent elements has exactly one different digit. For example, when n = 2, one of the gray code sequences is: 00,01,11,10. Now, the task is quite simple, given a positive integer n

文档评论(0)

1亿VIP精品文档

相关文档