算法填充题:题目
刚开始很难想到要用递归,后来仔细想了一下,确实还只能用递归.原因如下:
在开始时,相信大家(包括本人 )在刚看到题目的时候会迫不及待地将while后面填上pa&&pb以表示结束控制符,然后将最后一句填上return true表示判断成功,else语句后面填上return false在匹配不成功时强制退出(其实这样一写就已经错了,因为匹配不成功指针也要向后移动的),在then语句后面填上pa=pa->next;pb=pb->next语句,可是这样一来第一个空格似乎无内容可填了,此时陷入了僵局
考虑题型中没有任何多余的变量,于是考虑到这个是否是递归的基准情形,只能这样考虑,否则一条语句放在如此的位置不能有其他作用.题目没有定义新的变量,而pa,pb均已经初始化成功,所以只能是递归基准情形.所以第一个空格内填入if pa==NULL then return true;后面分别填入return (inclusion(pa,pb)); pb=pb->next; return false;
另外,函数体名"(inclusion)"也有"此地无银"的味道,暗示了本题是用递归解答的.
更多内容:
浙江大学ACM试题解答(四月)
http://blog.csdn.net/ctu_85/archive/2007/04/24/1576831.aspx
浙江大学ACM试题解答(三月)
http://blog.csdn.net/ctu_85/archive/2007/03/20/1535556.aspx
麻省理工算法导论翻译
http://blog.csdn.net/ctu_85/archive/2007/06/08/1643179.aspx
华容道游戏与算法
http://blog.csdn.net/ctu_85/archive/2007/05/15/1610722.aspx
中国象棋对战程序C语言源代码
http://blog.csdn.net/ctu_85/archive/2007/05/04/1596351.aspx
发表于 @ 2006年10月24日 23:55:00|评论(loading...)|编辑