1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
16_递归1

程序设计实习(II): 算法设计 第十五讲递 归 课堂问题(1)  请列举熄灯问题中一行有N 个按钮时实现枚举 的办法  用一个N位二进制数来表示一行按钮的状态,实现一个从二进 制数到状态的转换函数,通过一个循环(i:0~pow(2, N))即可 实现枚举 在熄灯问题中,需要实现一个从二进制数到状 态的转换函数,请补充完整 template class T, int varRow, int varCol void CLightT, varRow, varCol::SwitchStatus( int n){ for(int i = 0;i varCol ;i ++ ) pSwitch[0][i] = (n i ) 1 ; } 2 课堂问题(2)  在讨厌的青蛙中,如何实现判断从 当前secPlant 点开 始,步长为dx,dy ,那么最多能走几步?假设所有点 放在数组plants 中,请填空  先用QSORT对plants 中的元素排序,然后用BSEARCH从中 查找元素(X + dX ,Y + dY) int searchPath(PLANT secPlant, int dX, int dY){ PLANT plant; int steps = 2; plant.x = secPlant.x + dX; plant.y = secPlant.y + dY; while (plant.x = r plant.x = 1 plant.y = c plant.y = 1) { if (!bsearch (plant, plants, n, sizeof(PLANT), myCompare)) { steps = 0; break; } plant.x += dX; plant.y += dY; steps++; } return(steps); } 3 课堂问题(3 )  在STL的作业中,有一道CMyOstream_iterator 的题目 ,完成该题目必须了解STL 中哪一个模板函数的实现 方法? Copy  程序输出结果如下,请填空 1 2 6 7 8 9 main() { int a[] = {8,7,8,9,6,2,1}; ___________________; for( int i = 0;i 7;i ++ ) setint v ___________________; v.insert(a[i]) ostream_iteratorint o(cout, ); copy( v.begin(),v.end(),o); } 4 主要内容  递归 基本思想 关键问题  小游戏(POJ2802) 棋盘分割(POJ1191)  开关网络(扩展) 5 递归的基本思想  什么是递归  递归是指某个函数直接或间接的调用自身。  问题的求解过程划分成许多相同性质的子问题的求解, 而小问题的求解过程可以很容易的求出,这些子问题的解 就构成里原问题的解。  总体思想 待求解问题的解输入变量x 的函数f (x) 通过寻找函数g( ) ,使得f (x) = g(f (x-1)) 且已知f (0) 的值,就可以通过f (0)和g( ) 求出f (x) 的值  推广 扩展到多个输入变量x ,y ,z 等,x-1也可以推广到x - x 1 ,只要 递归朝着“出口”的方向即可 6 递归与枚举的区别  枚举: 把一个问题划分成一组子问题, 依次对这些子问 题

文档评论(0)

shaofang00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档