递归
ITCharge
高效率编程,慢节奏生活。
展开
-
NEFU564 汉诺塔【递归】
题目大意: 庙里有3个柱子,柱A、柱B、柱C。柱A有64个盘子,从上往下越来越大。庙里的老和尚想把这64个盘子 全部移动到柱C上。移动的时候始终只能小盘子压住大盘子,大盘子不能在小盘子上边。每次只能移动一 个。问:将柱A上面钱N个盘子从A搬到柱C的移动次数最少的搬动方法是什么 思路: 吧N个盘子从柱A移到柱C需要三个步骤: 1)把住A上N-1个盘子借助柱C移到柱B 2)把柱A上第N个盘子移动到柱C 3)把柱B上N-1个盘子借助柱A移动到柱C原创 2015-04-13 15:21:38 · 1055 阅读 · 0 评论 -
NEFU560 半数集【递归】
题目大意: 给定一个自然数N,有N开始产生半数集set(N)。set(N)定义如下: 1)N是set(N)中的元素 2)在N的左边自然数,但该自然数不能超过最近添加的数的一半。 3)按照这个规律,直到不能添加自然数为止。 例如:N = 6时,只能添加不超过6/2=3的自然数为1、2、3,即为16、26、36。而26、 36可以继续添加1,即126、136。则set(N) = {6、16、26、126、36、136}。 思路: 递归的添加,设能添加的数的个数为HalfSet(N),可遍历1~N/2,ans原创 2015-04-13 16:18:40 · 1184 阅读 · 0 评论 -
NEFU559 分书问题【递归】
题目大意: 有编号分别为1~N的N本书,准备分给N个人,每个人阅读兴趣用一个二维数组表示。 1:喜欢这本书;0:不喜欢这本书。 Like[i][j] = 1,i喜欢书j;Like[i][j] = 1,i不喜欢书j。 问:如何分书才能使得所有人都满意,输出第i个人分得的书的编号,如果有多个答案 输出序列数小的那一组。 思路: 序列要求从小到大,那么就从小到大递归美剧每个人喜欢的书,找到第一组答案就可以 了。用vis[]数组来判断第i本书是否被选,ans[]数组来存储输出序列。从第一个人开始选 书,到最后一个原创 2015-04-13 18:03:26 · 1226 阅读 · 0 评论 -
NEFU561 方块计算【递归】
题目大意: 在一间M*N的长方形房间里,地上铺了白色、黑色两种颜色的正方形瓷砖,你站在其中一块 黑色瓷砖上,只能向相邻的黑色瓷砖移动。问:总共能够达到多少快黑色的瓷砖。 数据中,'.'表示黑色的瓷砖,'#'表示白色的瓷砖,'@'表示你站的这块瓷砖(该瓷砖是黑色的)。 思路: 只能向相邻的黑色瓷砖移动,那么对于位置(x,y),就只能向(x+1,y),(x,y+1),(x-1,y), (x,y+1)的黑色的瓷砖移动。每次移动的时候看看没走过的瓷砖是不是黑色的瓷砖,如果是就 继续走,否则就返回。用ans存储走过原创 2015-04-13 18:30:14 · 1008 阅读 · 0 评论 -
NEFU563 鸭子知多少?【递归】
题目大意: 有个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又2只。这样经过了N个村子 还剩下2只鸭子,问:他出发时所赶的鸭子共有多少只。 思路: 路过第i个村子剩的鸭子数 = 第i+1天刚开始赶的鸭子数 = (第i+1个村子卖完剩的鸭子数+2)*2。用 dfs(i)表示第i天剩的鸭子数,那么dfs(i) = (dfs(i+1)+2)*2。从第1天开始卖,则答案就是第0天还未 卖的时候剩的鸭子数,即dfs(0)。原创 2015-04-13 16:08:24 · 1397 阅读 · 0 评论 -
二分查找、三分查找求极点、二分求等比数列【模板】
二分查找:int a[110],N; int BinarySearch(int *a,int x) { int Left = a[1]; int Right = a[N]; while(Left <= Right) { int mid = (Left+Right)>>1; if(a[mid] == x) retu原创 2015-05-06 15:36:39 · 1124 阅读 · 0 评论