
c++
洁洁好累
这个作者很懒,什么都没留下…
展开
-
(交换排序)冒泡排序
一.冒泡排序a.初始状态 有序区域【】没有元素,元素都在无序区b.【1,4,9,3,5,6,2】元素从右到左边比较边交换,第一趟【1】【4,9,3,5,6,2】c.重复到某次排序过程中一次交换也没有时,可以提前结束排序d.冒泡排序最多进行n-1次#include<iostream>using namespace std;void bubble_sort(int list[],int len){ int temp; for(int i=0;i<len-1;i++){ i原创 2021-12-21 19:21:28 · 83 阅读 · 0 评论 -
算法合集 棋盘 快速 归并 二分查找 01背包回溯 贪心-背包 8皇后 prim 克鲁斯卡尔 贪心-哈夫曼 最大子段和 矩阵连乘
#include<iostream>using namespace std;int tile = 1;void CB(int tr,int tc,int dr,int dc,int size){ if (size == 1) return; int t = tile++; //L型骨牌顺序号 int s = size/2; //分割棋盘 //处理左上角子棋盘 if (dr < tr + s && dc < tc + s) //特殊方格在此棋盘中原创 2021-05-10 16:18:11 · 223 阅读 · 0 评论 -
快速排序c++
快速排序1、快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。2、快速排序的三个步骤:(1)选择基准:在待排序列中,按照某种方式挑出一个元素,作为 “基准”(pivot)(2)分割操作:以该基准在序列中的实际位置,把序列分成两个子序列。此时,在基准左边的元素都比该基准小,在基准右边的元素都比基准大(3)递归地对两个序列进行快速排序,直到序列为空或者只有一个元素。在这里插入代码原创 2021-04-04 23:19:39 · 1164 阅读 · 1 评论 -
二分查找 c++
二分查找/*功能:二分查找作者:ltj创作时间:2021/3/15 */#include<iostream>using namespace std;int BSearch(int list[],int key,int low,int high){ //递归法 数组,关键字,第一个位置数组下标,最后位置数组下标 if(low<=high){ int mid=(high+low)/2; if(key==list[mid]){ //当要查找的值等于中间值时原创 2021-03-15 21:16:03 · 268 阅读 · 0 评论 -
全排序c++
全排序例如 给出三个数123,进行全排序。得到 123 132 213 231 312 321,共六种排法。算法思路:对1,2,3,4,四个数进行全排列的过程如下:a)首先保持数字1不动,对2,3,4进行全排列b)保持2不动,对3,4进行全排列;c)保持3不动,对4进行全排列,4只有一个数,所以得到的排列只有一种:1234。d)回退回来,3不可不变了,继续保持2不变,4和3互换保持4不变,得到排列1243。e)以12不动的排列完成,接下来将3和2互换,继续以上步骤的操作。由以上过程得到:原创 2021-03-14 20:16:34 · 308 阅读 · 0 评论 -
斐波那契小兔子c++
题目有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?分析兔子的规律为数列为1,1,2,3,5,8,13,21….规律:第三个数永远等于前两个数之和。算法一:由规律得出公式:从第三个数开始,f(n)=f(n-1)+f(n-2)根据递归调用算法得出:#include<iostream>using namespace std;int f(int n){ if(n==1||n==2) return原创 2021-03-14 14:33:02 · 913 阅读 · 4 评论 -
汉诺塔C++(递归)
汉诺游戏规则如下:1、有三根相邻的柱子,标号为A,B,C。2、A柱子从下到上按金字塔状叠放着n个不同大小的圆盘。3、现在把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方。分治算法:1.分解 将问题分解为若干个与原题相同的子问题2.治理 将问题不断分解到原子问题,可以直接求解为止3.合并 将所有子问题的解合并解决为了解决这个问题,不妨假设已经知道怎样移动N-1个圆环了。现在,为了把起点盘A盘上的圆环移动到目标盘C盘,假设盘子分别为ABC:1、把N-1个原创 2021-03-11 11:18:17 · 13424 阅读 · 10 评论 -
百钱买百鸡(枚举法)
百钱买百鸡(枚举法)百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,题目1:用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。解决方法一:三重循环+限定条件。限定条件:5公鸡+3母鸡+1/3*小鸡=100文钱。公鸡+母鸡+小鸡=100只小鸡个数为整数。所以小鸡必须满足:小鸡%3==0。#include<iostream>using namespace std;i原创 2021-01-30 18:19:22 · 7892 阅读 · 1 评论