
递归
桃三岁
这个作者很懒,什么都没留下…
展开
-
算法设计——二维最接近点对问题(递归分治)
问题给定二维平面上乱序的n(n > 1)个坐标点,求相距最近的两个坐标点是哪两个点,并且输出最近距离,若答案不唯一,输出任意一组满足情况的结果。思路我们已知n个点的坐标,要求距离最近的两个点以及其之间的距离,可以通过以下划分过程划分过程:我们可选取一个点,求其左边所有点的最小距离,求其右边所有点的最小距离,还有一种情况就是跨越中间点的两个点的最小距离,由此可以划分处理为三部分。处...原创 2020-04-15 09:38:26 · 3666 阅读 · 1 评论 -
算法设计——全排列(递归)
刚开始不太理解交换的意义后来发现就是一个不断交换的过程,但要恢复状态问题输入一个数字并对其全排列序列进行输出思路我们对于全排列,如41234 1243 1324 1342 1423 14322134 2143 2314 2341 2413 24313124 3142 3214 3241 3412 34214123 4132 4213 4231 4312 4321我们可看做是不...原创 2020-03-13 11:09:56 · 348 阅读 · 0 评论 -
给定形状棋盘的类皇后问题(递归)
又又又又是一道递归题我第一反应是类似于N皇后问题的递归,但后来发现不太一样,因为棋盘的可存在不放棋子的一行。先来看看题目叭题目链接:棋盘问题问题描述对于上面两个样例,答案分别为1、2.注意1、由于棋盘不规则,加上放的棋子数与棋盘行数并不相同,所以可存在不放棋子的一行。2、此题不能像皇后问题一样,dfs假设为前k-1行都排好,因此我们要使用一个变量记录放好棋子数目。3、不能存在棋...原创 2020-02-22 00:18:56 · 301 阅读 · 1 评论 -
N皇后问题(递归)
我们先来康康这个题:N皇后问题这个题就是用递归来做啦想要找到一个符合条件的方案,那么就需要将所有皇后放在合适的位置,那么最后一个皇后放的基础就是前N-1行的皇后都放好,那么第N-1行的皇后放的基础就是前N-2行的皇后都放好,以此类推。那么我们的递归函数做的就是将第k行的皇后放置好。当k>n时,计数加一,递归结束。其他情况时则从第一列到第N列进行试探,与已排好序的前k-1个皇后进行...原创 2020-01-28 22:42:40 · 930 阅读 · 0 评论 -
Oil Deposit深搜问题
题目链接:Oil Deposit这个题一看就是要用深搜(dfs)啦找到一个符合条件(1.不越界2.有油田)的位置时,那么我们对它进行以下操作:1.将此位置标记为访问过(此题中即将@改为*)2.对此位置的周围位置进行探索(由于包括斜对角,所以有8个方位)3.当探索到一个符合条件(上述条件)的位置时,又重复1,2操作。那么dfs函数的写法就是这样:void dfs(int x,int ...原创 2020-01-28 11:48:36 · 330 阅读 · 0 评论 -
Prime Ring Problem素数环问题
我们先来康康这个题:Prime Ring Problem刚开始做这个题第一想法还是循环,然后想了想循环不可行啊,那就只能递归啦,但是递归怎么做呢??递归递归就是要找递归出口和递归体啦这个题的递归出口就是判断你最后一个数字和第一个数字(即1)的和是不是素数,那么怎么判断呢?void dfs(int num,int n){ int i; if(num>=n+1&&am...原创 2020-01-27 15:34:28 · 461 阅读 · 0 评论 -
算法设计——汉诺塔问题(递归)
//汉诺塔问题,将一个柱子上盘子移到另一个上且顺序不变#include<stdio.h>void fun(int x,char o,char p,char q){ //o为最初杆,p为中转杆,q为目标杆if(x==1){printf("%c->%c\n",o,q); //当只有一个盘子时直接移动到目标杆return ;}fun(x-1,o,q,p);...原创 2019-07-09 15:29:31 · 494 阅读 · 0 评论