自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(146)
  • 资源 (3)
  • 收藏
  • 关注

原创 用m种颜色着色圆的n个扇形的方法总数

题目: 将圆分成 nnn 个扇形,用 mmm 种不同颜色染色,并且相邻的扇形不同色,问有多少种着色方法。分析: 假设将圆分成 nnn 个扇形符合题意的着色方法有 AnAnA_n 种。 对第一个扇形着色有 mmm 种,第二个扇形有 (m−1)(m−1)(m-1) 种,第三个扇形有 (m−1)(m−1)(m-1) 种…………\ldots\ldots第 nnn 个扇形有 (m−1)(m−1)(m-...

2018-03-19 21:05:26 4638

原创 矩阵中的路径--回溯

题目描述: 题目链接 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如下矩阵中包含一条字符串”bcced”的路径,但是矩阵中不包含”abcb”路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径...

2018-03-19 12:49:51 457

原创 字符串的排列--字典序生成、回溯

题目:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 题目链接AC代码:import java.util.ArrayList;import java.util.TreeSet;public class Solution { public ArrayLi...

2018-03-19 12:00:55 653

原创 数值的整数次方

原题链接点击这里题目描述: 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。AC代码:public class Solution { public double Power(double base, int exponent) { int exp=0; if(exponent&g...

2018-03-09 22:37:36 215

原创 Python基础篇

起步命令行运行 python 即可查看安装信息运行如下python代码也可查看安装版本:import sysprint (sys.version) 注意: Python3 和Python2的输出语法不一样,一个要括号,一个不要括号Sublime里面python运行环境的安装:Tools->Building System->New Build System,输入以

2018-02-02 16:33:37 488

原创 迪杰斯特拉算法Java实现 Disjktra

关于迪杰斯特拉的理论知识,参考理解最短路径——迪杰斯特拉(dijkstra)算法代码实现从源点到其他各点最短路径:最重要的是每次循环找出离源点最近的未标记点 nearestPos,然后以此点为中间点,修正从 start 点经过 nearestPos 点到其他各点 i 的最短路径长度。public class Dijkstra { static int MAX = 10000; p

2018-01-02 10:59:00 740

原创 牛刀小试二:字符串回文分割 Palindrome Partitioning (DFS+Backtrack)

题目:给定一个字符串s,要求划分串s使得得到的每一个子串都是一个回文串(即字符串从中间划分,前、后字符为镜像),结果返回所有可能的划分。例如:给定s=“ababc”,返回[      [“aba”,“b”, “c”],      [“a”,“bab”, “c”],      [“a”,“b”, “a”, “b”, “c”]]才发现这是LeetCode上的题目,链接在此。主要是深度优先搜索和回溯法的

2018-01-01 13:55:36 377

原创 牛刀小试一:矩阵最短路径

题目:给定一个M×N的矩阵,定义一条路径为:从矩阵左上顶点数字出发到达右下数字,每一次只可以从一个数字出发向右移动一步或向下移动一步,定义路径和为:路径经过的数字的和。要求编写一个程序,找到路径和最小的那条路径,并给出最小路径和。给定如图所示矩阵:一条路径为2->0->3->6->9->5,路径和为25[2 ,0 ,11,1 ][4 ,3 ,6 ,12][7 ,10,9 ,

2017-12-05 21:12:10 2898 1

原创 CSAPP Lab3:attacklab缓冲区溢出攻击实验

参考文章:http://wdxtub.com/2016/04/16/thick-csapp-lab-3/http://blog.csdn.net/lijun538/article/details/50682387http://blog.csdn.net/pessis1/article/details/52957696实验文件,点此下载实验答案:请

2017-11-07 20:47:28 2795

原创 Java基础示例程序

继承和转型public class Demo { public static void main(String[] args) { Test t = new Test(); t.test(); Fest f = new Fest(); f.test(); Test tf = new Fest(); tf.test(); Fest ft = (Fest) new T

2017-10-24 14:33:12 275

原创 CSAPP Lab2: bomblab拆炸弹实验(汇编代码的理解)

参考文章:实验准备知识http://blog.csdn.net/shiyuqing1207/article/details/45849413http://blog.csdn.net/shiyuqing1207/article/details/45849541http://blog.csdn.net/shiyuqing1207/article/details/45872429隐藏

2017-10-22 19:36:36 8491

原创 CSAPP Lab1:Manipulating Bits

主要是位操作还有二进制补码的理解。参考如下文章:https://wenku.baidu.com/view/584fee14af1ffc4ffe47acf2.html (非常好的实验报告)http://blog.163.com/miss_littleli/blog/static/24500302320151123115441194/ (log2这一题讲的非常清楚)/*

2017-10-12 22:09:28 1083

原创 堆和栈相关知识

网上关于堆和栈的资源很多,推荐几篇文章http://blog.csdn.net/hairetz/article/details/4141043 (堆和栈的区别,以及程序数据存储位置。非常好的文章)http://jingyan.baidu.com/article/6c67b1d6a09f9a2786bb1e4a.htmlhttp://www.cnblogs.com/jztan/p

2017-10-12 12:47:28 229

原创 算法学习之动态规划--最长公共子序列

题目:给出两个字符串,求出这样的一个最长的公共子序列的长度:子序列中的每个字符都能在两个原串中找到,而且每个字符的先后顺序和原串中的先后顺序一致。Sample Input :abcfbc abfcabprogramming contestabcd mnpSample Output :420题目分析:输入两个串s1,s2, 设MaxLen(

2017-09-20 22:14:21 355

原创 算法学习之动态规划--最长上升子序列

问题描述:一个数的序列ai,当a1 你的任务,就是对于给定的序列,求出最长上升子序列的长度。输入数据 输入的第一行是序列的长度N (1 输出要求 最长上升子序列的长度。 输入样例 7 1 7 3 5 9 4 8 输出样例 4解题思路:1.找子问题 “求序列的前n个元素的最长上升子序列的长度”是个子问题,但这样分解子问题,不具有“无

2017-09-19 22:13:19 577

原创 算法学习之动态规划--数字三角形最大路径和

题目:73  88  1  02  7  4  44  5  2  6  5在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或右下走。只需要求出这个最大和即可,不必给出具体路径。三角形的行数大于1小于等于100,数字为 0 - 99。输入格式:5//三角形行数。下面是三角形73 88

2017-09-19 20:40:40 5833

原创 算法学习之分治--快速排序

分治的典型应用:快速排序基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据小,然后再按此方法对这两部分数据分别进行快速排序。设要排序的数组是A[0],A[1], …, A[N-1],首先任意选取一个数据作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称之为一趟快速排序。整个排序过程有多

2017-09-19 07:28:10 553

原创 算法学习之分治--归并排序

分治的基本概念:把一个任务,分成形式和原任务相同,但规模更小的几个部分任务(通常是两个部分),分别完成,或只需要选一部完成。然后再处理完成后的这一个或几个部分的结果,实现整个任务的完成。数组排序任务可以如下完成:1) 把前一半排序2) 把后一半排序3) 把两半归并到一个新的有序数组,然后再拷贝回原数组,排序完成。代码实现归并排序:#inclu

2017-09-19 07:24:20 649

原创 算法学习之递归--4个数组成24的问题

题目:给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。现在的问题是,是否存在一种方式使得得到的表达式的结果等于24。 这里加减乘除以及括号的运算结果和运算的优先级跟我们平常的定义一致(这里的除法定义是实数除法)。 比如,对于5,5,5,1,我们知道5 * (5 – 1 / 5) = 24,因此可以得到24。又比如,对于1,1,4,2,我们怎么都不能

2017-09-16 19:17:32 8715

原创 无符号整型数用二进制串表示,求此串中1的个数

比方说数11,用二进制表示是1011 其中1的个数是3. 此题的求解方法有好多种,参考此文章http://www.cnblogs.com/graphics/archive/2010/06/21/1752421.html 这篇文章中有好多种算法,值得一读。这里主要再分析一下完美法的算法。算法代码如下:int bitcount(unsigned int n){ unsigned int

2017-09-14 21:42:53 879

原创 算法学习之递归--放苹果问题

问题:把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(注:5,1,1和1,5,1 是同一种分法)分析:设 f(m,n) 为m个相同的苹果放到n个相同的盘子中的方法总数。下面对n进行讨论,当 n>m 时,则必有n-m个盘子是空的。去掉这些空盘子对总的摆放情况数目不影响。即当n>m时,有 f(m,n) = f(m,m)当 n1、有空盘,至少

2017-09-12 21:28:15 901

原创 算法学习之递归--爬楼梯问题

例题: 爬楼梯树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数。例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级,也可以第一次走两级,第二次走一级,一共3种方法。输入:输入包含若干行,每行包含一个正整数N,代表楼梯级数,1 输出:不同的走法数,每一行输入对应一行输出分析:n级台阶的走法 = 先走一级后,n-1级台

2017-09-12 20:01:14 15465

原创 算法学习之递归--表达式计算(简单计算器)

题目:输入为四则运算表达式,仅由整数、+、-、*、/ 、(、) 组成,没有空格,要求求其值。假设运算符结果都是整数。"/"结果也是整数。解题思想:表达式的计算是个递归过程,如下图递归解决代码如下:#include#include#includeusing namespace std;int expression_value();

2017-09-12 19:12:24 3375

原创 算法学习之递归--逆波兰表达式

递归的作用:1) 替代多重循环2) 解决本来就是用递归形式定义的问题3) 将问题分解为规模更小的子问题进行求解....这次我们用递归来解决递归形式的问题。逆波兰表达式问题:逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表示法为+ 2 3。逆波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 +3)

2017-08-22 09:29:15 819

原创 算法学习之递归--N皇后问题

递归的作用:1) 替代多重循环2) 解决本来就是用递归形式定义的问题3) 将问题分解为规模更小的子问题进行求解....现在就用递归代替多重循环解决N皇后问题。n皇后问题:输入整数n, 要求n个国际象棋的皇后,摆在n*n的棋盘上,互相不能攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,输出全部方案。 输入一个正整数N,则程序输出N皇后问题的全部摆

2017-08-21 21:10:20 1059 1

原创 算法学习之递归--汉诺塔问题

一个函数调用其自身就是递归。最经典的递归求阶乘如下:int Factorial(int n){ if(n == 0) return 1; return n * Factorial(n-1);}递归和普通函数调用都是通过栈实现的。汉诺塔问题古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上(如图)。有

2017-08-21 19:30:48 433

原创 从数组中找出只出现一次的两个数,数组中其他数都出现两次

题目:在数组中有两个数只出现一次,其他数均出现两次。问怎样快速找出这两个数。方法一:直接遍历整个数组,建成类似hash的数组。用原始数组中元素值当hash数组下标,出现次数当hash数组元素值。最后再遍历一次hash,找出值为1元素的下标。或者不用hash数组,用map的键值对。思想一样的。时间复杂度:O(n)空间复杂度:O(n)还有没有更优的算法呢?联想到我们

2017-08-21 16:57:34 7534 1

原创 两个队列实现一个栈,并实现入栈、出栈、取栈顶等相关操作

分析:熟悉队列的先进先出,队列的进队出队、取队头队尾相关操作。这样就不难实现栈的相关操作。对照下面的示意图,理解程序代码。实现代码:#include#includeusing namespace std;templateclass DoubleQueue_Stack{public: void Push(T data){ //将元

2017-08-21 10:23:19 619

原创 两个栈实现一个队列,并实现队列入队、出队、取队头、取队尾相关操作

分析:栈是先进后出,队列是先进先出。可以在草稿本上模拟一下,然后就可以理解下面程序。对照下面的示意图。实现代码:#include#includeusing namespace std;template class DoubleStack_Queue{public: void Push(T data){ s1.push(data);

2017-08-21 10:19:13 1583

原创 实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)

分析:栈的出栈和入栈操作都是时间复杂度O(1)的,问题主要是如何获得栈中所有元素的最小值。其实如果问题是数组中存入很多元素,取出元素中的最小值,时间O(1),那很简单,就是设置一个变量,每次存入数据的时候都和最小值变量比较,到最后取此变量值即可。但是在栈中,我们要求不管push或者pop多少次,此时直接取最小值要求依然O(1)。也很简单,在我们存数据的数据栈之外弄一个辅助栈,每次数据存入数据栈时,

2017-08-20 17:00:34 1237

原创 算法学习之枚举--熄灯问题POJ1222EXTENDED LIGHTS OUT

题目链接http://poj.org/problem?id=1222这道题在MOOC平台上老师当枚举例题讲的,但是我网上搜了一下更多的是高斯消元法。二维数组模拟http://blog.csdn.net/morgan_xww/article/details/5801296高斯消元法http://blog.csdn.net/shiren_Bod/article/details/576690

2017-08-19 20:55:33 678

原创 算法学习之枚举--称硬币

枚举就是逐个尝试,直到找出正确答案。下面通过一个称硬币问题继续学习枚举思想。问题:有12枚硬币。其中有11枚真币和1枚假币。假币和真币重量不同,但不知道假币比真币轻还是重。现在,用一架天平称了这些币三次,告诉你称的结果,请你找出假币并且确定假币是轻是重(数据保证一定能找出来)。 输入:第一行是测试数据组数。每组数据有三行,每行表示一次称量的结果。银币标号为A-L。每次称量的

2017-08-19 09:46:19 3173

原创 趣味数学--用1到9这九个数组成一个四位数乘以一位数等于四位数的等式,每个数只能用一次

如标题所示,题目很简单,要求用1-9这9个数写出一个等式,这个等式是四位数乘以一位数等于四位数,每个数字只能用一次,即不重复出现。现在给出枚举算法的解答。#include#includeint main(){ char num[]="123456789",s[15]; for(int a=1000;a<=9999;a++){ for(int b=

2017-08-18 19:42:18 8734

原创 在给定的序列中寻找两数之和为定值m的情况--对算法复杂度的分析与优化

问题:输入n(n方法一:题目就是为了找两个数之和为m的情况,那我们可以用两重循环,枚举所有的取数方法。for(int i=0;i<n-1;++i){ for(int j=i+1;j<n-1;++j) if(a[i]+a[j]==m) break;}//这样就找到了i和j此方法时间复杂度为O(n^2). 且n^2约为100亿,

2017-08-17 17:03:29 442

原创 位运算

1、概述位运算概念:用于对整数类型(int,char, long 等)变量中的某一位(bit),或者若干位进行操作。比如:1) 判断某一位是否为12) 只改变其中某一位,而保持其他位都不变。C/C++语言提供了六种位运算符来进行位运算操作:& 按位与(双目)| 按位或(双目)^ 按位异或(双目)~ 按位非(取反)(单目)左移(双目)>>

2017-08-16 16:53:30 549

原创 二叉树(二) 求二叉树高度,根据先序和中序构建二叉树,判断二叉树是否是完全二叉树,判断两棵树是否相等

根据上一篇二叉树的各种遍历方法,本篇文章进一步写出二叉树相关操作函数代码。1、求二叉树高度递归求解:/*递归求二叉树高度*/int Btdeep(BiTree T){ if(T == NULL) return 0; int ldeep = Btdeep(T->lchild); int rdeep = Btdeep(T->rchild);

2017-08-15 20:11:13 763

原创 二叉树(一) 先序遍历、中序遍历、后续遍历、层次遍历的递归与非递归实现

直接看代码吧,理论知识略了,网上一搜一大把,本篇主要记录代码实现过程。#include#include#include#include#includeusing namespace std;/*二叉树链式存储结构*/typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild;}BiTN

2017-08-15 16:33:59 460

原创 UVa679-Dropping Balls-小球下落-二叉树的编号

题目链接:https://vjudge.net/problem/UVA-679 本题程序并不是按照OJ输入输出的!有一棵二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从上到下从左到右编号为1, 2, 3,…, 2D-1。在结点1处放一个小球,它会往下落。每个内结点上都有一个开关,初始全部关闭,当每次有小球落到一个开关上时,状态都会改变。当小球到达一个内结点时,如果该结点上的开关关闭,则

2017-08-12 10:32:37 433

原创 C++常见字符串操作函数的实现(strcpy/strcat/strcmp/strlen/strchr/strstr/strpbrk/strrev等)

先看一下字符串操作函数,点这里C语言字符串操作总结大全(超详细)1、strcpy函数原型:char *strcpy(char *dest, const char *src) 函数功能:将源字符串src的内容复制到目的字符串dest中,并返回指向目的字符串dest的指针。注意:要求dest字符串长度要大于或等于src长度,否则会越界。复制时会将src的结束符'\0'也复制到d

2017-08-09 12:06:16 1460

原创 UVa514-Rails-铁轨--栈的使用

说明:本题只是主要思想代码,没有按照OJ上的输入输出格式来。要提交OJ的修改下输入即可。题目:https://vjudge.net/problem/UVA-514某城市有一个火车站,铁轨铺设如图6-1所示。有n节车厢从A方向驶入车站,按进站顺序编号为1~n。你的任务是判断是否能让它们按照某种特定的顺序进入B方向的铁轨并驶出车站。例如,出栈顺序(5 4 1 2 3)是不可能的,但(5

2017-08-06 09:13:57 491

CSAPP Lab3 attacklab实验源材料

CSAPP Lab3 attacklab实验源材料 深入理解计算机系统实验三缓冲区溢出攻击实验源材料

2017-11-07

CSAPP Lab2 bomblab二进制炸弹

CSAPP Lab2 bomblab二进制炸弹 拆炸弹实验源代码 深入理解计算机系统课程实验二资料。程序设计与计算机系统课程。

2017-10-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除