![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
c/c++
c/c++
Marx_W
这个作者很懒,什么都没留下…
展开
-
十大排序算法
一个讲的很全面的博客,每个排序算法都有对应的动画展示排序过程。十大排序算法1. 排序算法总览2.十大排序算法对应的时间复杂度以及空间复杂度3. 代码实现#include <iostream>#include <vector>using namespace std;//1. 比较类排序//1.1 交换排序//1.1.1 冒泡排序 时间复杂度 O(n^2) , 空间复杂度 O(1)void bubblesort(vector<int> &原创 2021-04-28 19:50:00 · 78 阅读 · 0 评论 -
排序算法1——归并排序
递归算法#include <stdio.h>using namespace std;void merge(int *array , int start , int mid , int end , int *result){ //归并排序(两个相邻的序列归并),其中result数组用来存放这两个序列排序好的结果 int i = start ; int j ...原创 2018-03-01 18:35:22 · 177 阅读 · 0 评论 -
并查集讲解
1.首先来看一个实例,杭电1232畅通工程题目大意:在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。像畅通工程这题,问还需要修几条路,实质就是求有几个连通分支。如果是1个连通分支,说明整幅图上的点都连起来了,不用...转载 2018-04-21 19:21:15 · 213 阅读 · 0 评论 -
位运算
原作者:竟然有人也叫Webwei 转自:https://blog.csdn.net/sinat_35121480/article/details/53510793第一部分:基础运算 : & 、 | 、 ^ 、 ~1.按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算。 1.1运算规则:0&0=0; 0&1=0; 1...转载 2018-04-14 16:41:57 · 148 阅读 · 0 评论 -
动态规划——最长公共子序列
**转自:https://blog.csdn.net/hrn1216/article/details/51534607 原作者:Running07** 过程可以说是讲的非常清楚了!!!!1.基本概念 首先需要科普一下,最长公共子序列(longest common sequence)和最长公共子串(longest common substring)不是一回事儿。什么是子序列呢?即一个给...转载 2018-03-31 21:42:41 · 205 阅读 · 0 评论 -
动态规划——状态压缩
转自:http://blog.csdn.net/lu597203933/article/details/44137277(本文中加了一些自己的理解)题目这个题目的题意很容易理解,在一个N*M的格子里,我们现在有两种类型的砖块,1 * 2和 2 * 1,问一共有多少种方案,可以将整个N*M的空间都填满。最简单的例子就是下面的了: 编程之美中题目:某年夏天,位于希格玛大厦四层的微...转载 2018-03-11 17:28:36 · 558 阅读 · 0 评论 -
动态规划——投资问题
要求:现有X万元资金可以投资给m个项目,先给出三个项目分别投资0~X万元可得的利益,其求出如何分配这X万元可以使得得到的利益最大化。 (本题以投资金额为7万元资金以及A、B、C三个项目为例) 解题思路: 这道题目是分成的项目是三个,所以可以将整个解题思路分为三个阶段。 第一阶段:只考虑A一个项目,即将所有的资金都投资给A,那么此时可以获取的利益就是: 第原创 2017-04-06 20:46:49 · 16636 阅读 · 1 评论 -
动态规划——数塔问题
题目:如图一个数塔,从顶部出发在每一个节点可以选择向左或者向右走,一直走到最底层,找出一条路径,使得路径上的数字之和最大. 思路分析: 误区:看到这个题第一个想法就是使用贪婪算法,从而得到的结果是9->15->8->9->10.然而这道题目的正确结果应该是9->12->10->18->10.所以不能使用贪婪算法来求解这条题目。思路:在用动态规划考虑数塔问题时可以从下往上计算。 从原创 2017-03-31 23:10:41 · 11272 阅读 · 0 评论 -
贪心算法——删数问题(修改后)
要求:一个m位的数,去掉其中任意s个数,剩下的数按原次序组成一个新的数,要求编写程序是的重新组合的那个数最小。主要思路: 1、确定最高位:现在前s+1个数中找到最小的那个数,同时将所找到的这个数之前的数全部删掉。(因为删除s个数,所以最高位的那个数肯定在前s+1之中) 2、按同样的方法依次确定第i位数,但是数字比较的范围要缩小到从上一个确定的数后一位数到第s+i位数。(一共比较s原创 2017-03-27 19:59:37 · 2450 阅读 · 2 评论 -
数串
题目描述 设有n个正整数,将他们连接成一排,组成一个最大的多位整数。 如:n=3时,3个整数13,312,343,连成的最大整数为34331213。 如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。 输入描述: 有多组测试样例,每组测试样例包含两行,第一行为一个整数N(N<=100),第二行包含N个数(每个数不超过1000,空格分开)。 输出描述: 每组数据原创 2017-12-02 20:18:54 · 398 阅读 · 0 评论 -
algorithm——sort(eg.The Dragon of Loowater)
algorithm 中 sort函数(快排实现,时间复杂度 O(nlogn)): sort函数:sort(first,end,method)//其中第三个参数为可选参数。 参数含义: first:需要排序数组的起始位置 end:终止位置 method:是一个方法,用来决定sort函数的排序方式1.当只有两个参数时,则默认排序为从小到大 (应用见例题) 2.当有3个参数时,则要实现...原创 2017-09-01 11:28:14 · 208 阅读 · 0 评论 -
最大子段和
要求:给一个数组如:-1,12,9,-5,3,7,-11,7,是求取其的一个子段,要求子段和最大,要求输出最大和,子段的开始位置,子段的结束位置。思路:暴力法可以做,而且代码也很简单,只有两个循环,但是对于元素比较多的数组时间复杂度会很大。过程: c++代码:#include <iostream>using namespace std;int main(){ int *num,n原创 2017-04-22 13:16:00 · 306 阅读 · 0 评论 -
分治算法——棋盘覆盖
一个边长为n(2^k)的棋盘,其中有一个位置缺失,现有如下4中图形用来覆盖棋盘,编程实现棋盘的覆盖。 四个图形:(白色部分为缺陷部分) 覆盖如下一个棋盘(4*4):(白色部分为缺陷部分) 覆盖后的结果就为:(相同的字母代表一块) 主要思想: 将一个大问题分成若干个小问题来解决,所以很自然就能想到用递归。 具体的分割是以4*4的棋盘为例:原创 2017-05-03 22:19:12 · 714 阅读 · 0 评论 -
KMP算法
C++代码:#include <iostream>#include<string.h>#define maxsize 100using namespace std;void Build_next(int *next,char *str,int t){ int i,temp; next[0]=-1; next[1]=0; for(i=2;i<t;i++)原创 2017-05-12 17:34:13 · 191 阅读 · 0 评论 -
递归算法讲解
原作者:书呆子Rico 《递归的内涵与经典应用》 http://my.csdn.net/justloveyou_摘要: 大师 L. Peter Deutsch 说过:To Iterate is Human, to Recurse, Divine.中文译为:人理解迭代,神理解递归。毋庸置疑地,递归确实是一个奇妙的思维方式。对一些简单的递归问题,我们总是惊叹于递归描述问题的能力和编写代转载 2017-06-15 22:11:51 · 242528 阅读 · 33 评论 -
c语言里面用scanf连续输入字符型数据常见问题
#include <stdio.h>#include <stdlib.h>int main(){ char i,j; printf("put in i:"); scanf("%c",&i); printf("i=%c\n",i); printf("put in j:"); scanf("%c",&j); printf("j=%c\n",j原创 2017-04-23 18:40:54 · 15088 阅读 · 6 评论 -
蛮力法——狱吏问题
题目大意:狱吏问题)某王国对囚犯进行大赦,让一狱吏n次通过一排锁着的n间牢房,每通过一次按所定规则转动门锁,每转动一次,原来锁着的被打开,原来打开的被锁上;通过n次后,门锁开着的,牢房中的犯人放出,否则犯人不得获释.转动门锁的规则是这样的,第一次通过牢房,要转动每一把门锁,即把全部锁打开;第二次通过牢房时,从第二间开始转动,每隔一间转动一次;第k次通过牢房,从第k间开始转动,每隔k-1 间转动一次;原创 2017-06-10 21:18:30 · 3626 阅读 · 1 评论 -
回溯法——八皇后
题目大意:八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为n1×n1,而皇后个数也变成n2。而且仅当 n2 = 1 或 n1 ≥ 3 时问题有解。C++代码:#include<iostream>原创 2017-06-10 21:47:04 · 232 阅读 · 0 评论 -
动态规划——0-1背包问题
主要思路:从物品n开始向背包里面放 利用二维数组build[i][j]来记录每个阶段背包里面可以放置物品的最大价值情况 i–>(1,n) 用来表示物品的标号 j–>(0,C) 用来表示当前背包的容量1、第一步放物品nfor(j=0;i<=C;j++){ if(j<weight[n]) build[n][j]=0; 物品n不能放入原创 2017-06-13 22:00:56 · 322 阅读 · 0 评论 -
螺旋矩阵
要求:输出螺旋矩阵(如图所示): 1 12 11 10 2 13 16 9原创 2017-03-24 20:44:33 · 337 阅读 · 0 评论