![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
qq_42681040
这个作者很懒,什么都没留下…
展开
-
常见排序算法实现
插入排序#include<stdio.h>// 插入排序void sort(int *array, int start, int end) { int tmp,i,j; for (i = start + 1; i < end; i++) { // 取出待排元素 tmp = array[i]; for (j = i - 1; j >= start; j--) { // 元素后移,找到合适位置原创 2021-03-12 22:32:21 · 68 阅读 · 0 评论 -
最佳加法表达式
描述给定1到9的一组输入数字,在这组数字之间添加m个加号,使得分开的数字之和最小;思想先确定最后一个加号的位置,则问题分为前面部分的最小数字之和加上最后一个数字;遍历所有最后一个加号的可能位置,找到最小的结果,即为所求;#include<iostream>#include<cstring>#include<cmath>using namespace std;int optimal_add(char a[],int len,int m){ /原创 2020-07-06 13:33:35 · 549 阅读 · 0 评论 -
递归求逆序对个数
描述给定输入n,之后输入1到n的一个排列,求排列中的逆序对的个数;想法思路一:找到序列中的最大数(记其下标为i),则前面的所有数都不会和这个数形成逆序,后面的所有数和这个数都是一个逆序对,从而有n-i-1个逆序对;删掉这个数,则剩下的数形成n-1规模的子问题,递归执行;用链表存储数据,可以节省删除元素后移动剩余元素的时间,加快执行速度;时间复杂度O(n^2)思路二:利用归并排序的思想,将问题分解为两个子部分,要求两个子部分有序,然后归并两个子部分,归并过程计算出子部分间原创 2020-07-05 19:51:10 · 1062 阅读 · 2 评论 -
n个数中输出前m大的数
描述n个数,要求输出其中的m个最大数想法1开辟辅助数组,用插入排序,将前m最大数插入到辅助数组中,时间复杂度O(n*m)想法2类似快速排序的想法,将前m大的数都聚到最左边,再进行一次排序输出取一个key,将大于key的数放到左边,若大于m则左边递归;若小于m,右边递归实现代码1:#include<iostream>#include<cstdlib>#include<cmath>using namespace std;void Mer原创 2020-07-05 16:16:55 · 922 阅读 · 3 评论 -
二分查找(迭代、递归实现)
#include<iostream>#include<cstdlib>#include<cmath>using namespace std;//递归法int BinarySearch(int a[],int size,int p){ //输入一个数组,大小为size,查找元素p if(size == 0) //终止条件,表示没找到 return -1; int index = size/2; if(a[index] ==原创 2020-07-05 12:47:34 · 209 阅读 · 0 评论 -
//n皇后问题//
求出n皇后问题的全部解递归算法——利用递归消除多重循环的思想void NQueen(int k); //表示从第k行开始放置皇后,失败则什么都不做,回退到上一步,成功则递归完整代码:#include<iostream>#include<cmath>#include<cstring>using namespace std;int n;int queenPos[100];void NQueen(int k){ int i; if原创 2020-07-03 19:56:10 · 118 阅读 · 0 评论 -
//逆波兰表达式//
输入:x / + 12 36 + 1 3 - 15 8输出:84#include<iostream>#include<cmath>#include<cstring>using namespace std;float notation(){ char str[10]; cin >> str; //输入逆波兰表达式中的一个段(符号或数字字符串) switch(str[0]){ case '*': return原创 2020-06-10 00:47:19 · 102 阅读 · 0 评论 -
//放苹果问题//
问题:在n个盘子中放置m个苹果,共有几种不同的放置方法;分析:若m小于n,放置方法与空盘子数目无关,(m,n)=(m,m);若m大于等于n,放置方法分有空盘,无空盘两类:有空盘说明至少有一个空盘(m,n)=(m,n-1)无空盘与每个盘子减少一个苹果的情况相同(m,n)=(m-n)#include<iostream>#include<cmath>#include<cstring>using namespace std;int NumPlace(原创 2020-06-09 22:57:13 · 135 阅读 · 0 评论 -
日历查询(C++)
#include<iostream>#include<cmath>#include<cstring>using namespace std;int main(){ int num; int year=2000,month=1,day; int ryear=0,rflag = 1,wflag; //闰年计数、闰年、星期的标志位 int nyear=0; //非闰年计数 char w0[10] = "Sunday";原创 2020-06-09 21:56:52 · 222 阅读 · 0 评论