b98902HW 板


LINE

(设计对白) A:我知道这题要用递回,阿可是,不知道函式里面要写什麽耶... B:为什麽跑出 "回报此问题","不回报" 了 = _ = --------------------------------------------------------------- 如果你有上面的困扰,可以参考看看这个格式 这是一位B97的学长教我的,我觉得还蛮实用的,所以PO出来给大家参考 int Function( 1.参数区 ) { 2.条件判断区 3.递回区 } 1.参数区: 通常会放与递回有关的参数,例如:座标、层数、index、必要资讯等等, 以判断我递回到哪里了,是否该停止会跟参数有很大的关系 2.条件判断区: 这是非常重要的地方,这里要放一些条件的判断,判断递回是否该停止,或者跳过某 些层数,或者已经跑到我要的层数,我要输出了。 3.递回区: 真正自己呼叫自己的地方,通常这里也会有一个或以上条件的判断,以确定是否符合 题目要求,是否呼叫函式。 --------------------------------------------------------------------------- 举例来说: The Dictionary (单班期中 双班好像也有考) http://judgegirl.csie.org/~c2009/2009mid2/3.htm 首先把原字串照字典顺序排序後 开始写函式了 (L是题目要求输出的长度,N是字串S长度,str是排序後字串,buf暂时存答案) char str[100]; char buf[10]; int L,N; void Findans(int layer) 参数区,这题因为只有一维,所以一个 { "层数"的参数就够了 int i; if(layer==L){ 这里就是条件判断区了,当我layer跑到L, buf[layer]='0'; 就代表,我已经跑了第0,1,2..L-1层共L层 printf("%s\n",buf); 也就是任务完成,不用再递回,输出呗! } else{ for(i=0;i<N;i++){ 这里就是递回区,这题因为是全排列,每个都需 if(Check()==1){ 试试看,所以放了一个for loop。 buf[layer]=str[i]; 这里Check()就是检查有没有符合题意,有的话 Findans(layer+1); 就进行下一层 } } } return ; } int main() { Findans(0); return 0; } 把其他该补上的程式码补上这题就OK了 =) (#include main() Check() ) 当然,没有一个方法是万能的,题目变化多端,整个递回式还是要看题目而调整, 不过我觉得学长教了我这东西以後,我想递回真的有快了一点,也比较有方向, 不致於完全卡住不知道该写什麽,所以可以参考看看。 ------------------------------------------------------------------------ 关於什麽时候该用递回,我会这样想: 1.以上面的题目为例,其实如果L固定是3,我可以写三层回圈,检查完,符合题意的 就输出。 但是L是变动的,我们没办法告诉电脑我要跑几层,而且万一层数是100层, 或者是层数跟测资有关系,无法马上确定,写不出来。 那常常就可以想到"递回"。 我只要告诉电脑我哪时候该停止、哪时候进行下一层(呼叫自己)就可以了。 2.或者是像单班功课 Machine 这一题 http://groups.google.com.tw/group/ntucsie-c2009/web/homework-3?pli=1 我想要的答案是个大问题(大机器的成本),而这个大问题需要好多小问题(较小机器的 成本)来回答我,我才能回答。而小问题又需要小小问题的答案....,这种形式的题目 常常就可以想到递回! 我设定function回传的值是我想要的资讯、条件判断区判断多小的问题是直观解决的, 直接回传。 (这题是"" The cost of machine A, B, and C of size 1 are x, y, and z. "" 这句话告诉了我们 size 1的cost是多少) 把参数放好、递回区写好,就可以解决这一题了 = ) 当然可能还有很多@@,不过我一时也想不到,(强者可以补上)。 不过也不是什麽题目都给他递回下去,能够用while解决就用while 毕竟递回颇浪费空间、也容易发生没注意到的情况而无限递回下去。 大家加油! -- A stoo a day keeps bad grades away Just keep it ! --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.241.197 ※ 编辑: barry800414 来自: 140.112.241.197 (11/17 12:19)
1F:推 zxm20243:睡醒第一推!教学好文XD 11/17 13:41
2F:→ ckclark:字典题有人还是有写了五层回圈AC的高手XD 11/17 14:25
3F:推 andy74139:推推!! 11/17 15:21
4F:推 lmr3796:递回只应天上有 11/17 16:20
5F:推 jimmyken793:凡人应当用回圈 11/18 09:03







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP