自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

仰望星空

Using no way as way, having no limitation as limitation.

  • 博客(61)
  • 资源 (2)
  • 收藏
  • 关注

原创 约瑟夫环实例(1)

有个游戏是这样的:首先,让n个小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....直到剩下最后一个小朋友,可以不用表演,并且拿到礼品(注:小朋友的编号是从0到n-1)。一、  思路一暴力破解class...

2018-08-31 10:56:52 2010

原创 扑克牌顺子

LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面...

2018-08-30 10:27:44 1427

原创 翻转单词序列

推荐阅读  左旋字符串  原理大概都是基于: 一、  解法一 class Solution {public: string ReverseSentence(string str) { int len = str.size(); if (len == 0) return ""; string res = str; ...

2018-08-29 15:26:32 498

原创 左旋字符串

汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。一、  解法一缺点就是重复移动,时间复杂度太高。class Solution {public: string ...

2018-08-28 22:37:46 124

原创 和为S的两个数字

输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 对应每个测试案例,输出两个数,小的先输出。思路:设置头尾两个模拟指针(数组下标)进行搜索。现说明这样做的理由。证:x + y = S;y = x + d;(d > 0是一未知常数)乘积 = x * y = 1/4( S平方 - d平方)...

2018-08-28 16:28:20 113

原创 和为S的连续正数序列

目录一、  解法一 二、  解法二  三、  解法三四、  解法四(换元法) 五、  解法五要求计算出9~16的和,写出正确答案是100。究竟有多少种连续的正数序列的和为100(至少包括两个数)。另一组连续正数和为100的序列:18,19,20,21,22。现有问题如下,能不能也很快的找出所有和为S的连续正数序列?输出所有和为S的正数序列。序列内按照从小至大的顺序,序列...

2018-08-27 14:13:49 4751 5

原创 数组中只出现一次的数字

一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。集百家之长,终于总结出两大类方法(约有5段具体实现上有细微差别的程序)。将会不断地去修改本篇博客。现总结如下:一、括号匹配思想1.1  基于栈类似思想的示例还有判断某序列是否为压栈序列的弹出序列。class Solution {public: void FindNumsAp...

2018-08-24 22:24:33 360 1

原创 数组中的逆序对

在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007。一张图已经说明了一切,请看代码class Solution {public: int InversePairs(vector<int> data) { ...

2018-08-23 14:39:01 185

原创 第一个只出现一次的字符

在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)。思路:开辟大小为58的字符数组用于存放出现的次数,(122-65+1 -> 详见ASCII码表)再遍历一次字符串,返回出现次数为1的位置。class Solution {public: int FirstNotR...

2018-08-22 17:47:01 168

原创 求1+2+3+···+n

 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。解法一大多数情况下无法通过编译,由于动态定义了数组。class Solution {public: int Sum_Solution(int n) { char a[n][n+1]; return s...

2018-08-22 16:31:57 437

原创 丑数

把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。假定丑数有序序列为:a1,a2,a3.......an;可将以上序列(a1除外)可以分成3类,必定满足:2*a1, 2*a2, 2*a3 .....3*a1, 3*a2, 3*a3 .....5*a1, ...

2018-08-22 16:10:08 104

原创 把数组排成最小的数

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。非静态成员函数是依赖于具体对象的,静态成员函数或者全局函数是不依赖于具体对象的, 可以独立访问,无须创建任何对象实例就可以访问。同时静态成员函数不可以调用类的非静态成员。class Solution {pub...

2018-08-22 15:39:55 418

原创 整数中1出现的次数

求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?1~13中包含1的数字有1、10、11、12、13因此共出现6次,把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。思路:既然要求[1,n]区间1出现的次数,有两条线可以去走。例如n = 13时,角度1:个位出现1的点:1,11;十位出现1的点:10,11,1...

2018-08-22 11:06:58 468

原创 连续子数组最大和

在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和。思路:class Solution {public: int F...

2018-08-21 10:54:39 103

原创 数组中出现超过一半的数字

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。一、  阵地攻守思想第一个数字作为士兵,防守阵地(cnt = 1); 遇到相同的元素,cnt++; 遇到不同的元素(即为敌人),同归于尽,cnt--; 当cnt == 0时,...

2018-08-18 14:44:58 203

原创 判断某序列是否为压栈序列的弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。思路:建立一个辅助栈,遍历压栈序列,和待判断的出栈顺序作比较(由此可见,压栈序列的循环是放在里面的)。如1、2、3、4、5是栈的压入顺序,如何去判断5、4、3、2、1是不是其弹出序列如上图所示。class Solution {public: bool IsP...

2018-08-18 09:33:38 542

原创 获得栈中最小元素(时间复杂度O(1))

思路:利用一个辅助栈StackMin来存放最小值。 如上图所示:序列3、4、2、5、1依次入栈    ->    辅助栈的栈顶就是最小元素。每入栈一次,就与辅助栈顶比较:较小就压入辅助栈顶, 否则就把原先辅助栈顶元素再压入一次;class Solution {public: void push(int value) { StackInt....

2018-08-17 22:12:18 826 1

原创 调整数组

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。一、思路一类似冒泡排序,偶数在奇数前面就交换。class Solution {public: void reOrderArray(vector<int> &array) { ...

2018-08-17 15:22:11 406

原创 实现Power()函数

 递归版本非递归版本1.全面考察指数的正负、底数是否为零等情况。2.写出指数的二进制表达,例如13表达为二进制1101。3.举例:10^1101 = 10^0001*10^0100*10^1000。4.通过&1和>>1来逐位读取1101,为1时将该位代表的乘数累乘到最终结果。class Solution {public: double P...

2018-08-17 14:43:05 6271

原创 二进制中1的个数

解法1 int NumberOf1(int n){ int cnt = 0; while(n != 0) { ++cnt; n = n & (n - 1); } return cnt;}分析:根据实际情况,循环执行次数最少。 解法2int NumberOf1(int n) { int cnt = 0; unsigned int fla...

2018-08-17 10:23:41 104

原创 斐波那契数列的应用------矩形覆盖问题

 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?class Solution {public: int rectCover(int number) { if(number <=0) return 0; //numbet > 0 ...

2018-08-14 15:08:47 511

原创 变态跳台阶问题

普通跳台阶问题一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 f(n)=f(n-1)+f(n-2)+......+f(1)+1经过数值举例后,我们发现,台阶对应的跳法实际上是1    2    4    8    16    32......故代码实现就非常明确class Solution {p...

2018-08-14 12:29:35 415

原创 斐波那契数列的应用------跳台阶

斐波那契数列一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 第n阶台阶只可能通过第n-2或第n-1阶台阶达到; 1阶或者2阶,假定第一次跳的是一阶,剩下的是n-1个台阶,跳法是f(n-1);假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2); 得出总跳法为: f(n) = f(n-1)...

2018-08-14 11:10:36 386

原创 统计大写字母出现的次数

#include<stdio.h>//统计字符串中大写字母的出现次数void AlphabetCounting(char _arr[]){ int count[26] = {0}; int i = 0; while(_arr[i]!='\0') { if (_arr[i] >= 'A'&&_arr[i] <= 'Z') { ...

2018-08-13 17:13:29 1545

转载 进程通信概述

原文链接 进程通信概述        进程间通信方式的展示,包含了windows、Unix、Java三个部分:     &n...

2018-08-13 16:07:10 175

原创 内联函数随笔

内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方。 内联函数是指用inline关键字修饰的函数。在类内定义的函数被默认成内联函数。 内联函数从源代码层看,有函数的结构;而在编译后,却不具备函数的性质。 内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是能否形成内联函数,需...

2018-08-13 15:59:44 200

原创 补码

一、 引言+0的原码是00 00 00 00;反码是 00 00 00 00;补码是 00 00 00 00;-0的原码是80 00 00 00;反码是 FFFFFFFF;补码是 00 00 00 00;用补码表示时,+0和-0是相同的,符合正常认知。二、 解释2.1、 基础由此引出计算机中补码的表示规则:正数和零暂不讨论,需要额外注意负数的转换规则。对于负...

2018-08-13 11:50:38 5617 2

原创 实现list命令(1)

一、  支撑知识 目录是一个包含目录项的文件。在逻辑上可以认为每个目录项都包含一个文件名(这一点在以后需要深入探讨),同时还包含说明该文件属性的信息。 文件属性是指文件类型、文件大小、文件所有者、文件权限以及文件最后修改时间等。 主要涉及头文件#include<dirent.h>  opendir函数返回指向DIR结构的指针,将指针传送给readdi...

2018-08-12 16:57:57 1803

原创 kill()函数

 一、  实例编写一个函数,功能是杀死另一个进程;#include<stdio.h> //printf()#include<stdlib.h> //exit()#include<unistd.h> //fork()#include<signal.h> int main(int argc, char cons...

2018-08-12 10:12:14 9503

原创 非阻塞运行实例(1)

一、  支撑知识1.1  非阻塞运行:无论条件是否发生,函数都会立即返回; 1.2  信号:操作系统预先定义好的某些特定事件;    /usr/include/bits/signum.h 发送信号和接收信号的主体是进程; 是操作系统中的一种事件通知机制,用于进程之间,如A进程向B进程通知某个事件的发生;  1,3  父进程执行流程:父进程先若无其事地处理自...

2018-08-12 09:25:37 510

原创 僵死进程实例(2)

目录一、  支撑知识 二、  示例代码三、  运行结果 一、  支撑知识  阻塞运行:当条件未发生时,函数等待条件发生;当条件发生后,函数才会返回。二、  示例代码#include<unistd.h> //fork()#include<stdio.h> //printf()#include<assert.h> ...

2018-08-11 22:34:20 173

原创 僵死进程实例(1)

 一、涉及到的命令:ps -e 显示操作系统上所有进程 ps -f  显示进程的详细信息 cat /proc/pid/status   注意,使用时将pid换成数字就可以了 建议先掌握,后理解。因为计算机学科不同于其他学科。知识是一个体系,当务之急是拓宽知识面!二、实例进程主体结束,但进程PCB依旧存在; 在多进程编程中,父进程未结束但是子进程已结束。子进程就被认为是僵...

2018-08-11 11:31:54 394

原创 fflush函数实例

推荐阅读fflush有什么作用引文来自MSDN         Fflush has no effect on an unbuffered stream.  Buffers are normally maintained by the operating system,  which determines the optimal time to write the data automa...

2018-08-10 17:53:28 953

原创 fork函数_实例(2)

推荐先阅读fork()函数实例(1)四、情形3(对比情形2)#include<stdio.h> //printf()#include<unistd.h> //fork()int main(){ int i = 0; for(; i < 3; ++i) { if(fork() == 0) ...

2018-08-10 17:12:16 186

原创 fork函数_实例(1)

一、情形1#include<unistd.h> //fork()#include<stdio.h> //printf()int main(){ if(fork() && fork()) { printf("A\n"); } else { printf("B\n"...

2018-08-09 22:31:59 1580

原创 在Linux系统下读取文件并在屏幕输出

程序代码: #include<stdio.h> //标准输出printf()#include<stdlib.h> //exit()#include<unistd.h> //宏O_RDONLY#include<fcntl.h> //open(),read()void main(){ int i = 0; int fd =...

2018-08-09 21:59:55 6107

原创 子进程调用close()会发生什么?

一般来说,子进程调用close()不会发生什么。close()函数关闭文件时,并不是在任何情况下都直接关闭文件,而是找出struct file结构体中f_count成员,执行自减操作;直到f_count为0,才是真正的关闭文件。这就是著名的技术——引用计数。#include<stdio.h> //printf()打印输出#include<stdlib.h> //ex...

2018-08-09 21:37:38 990

原创 指针变量进行运算

C语言指针变量运算一、相减运算偏移量除以指针每次移位的大小。加法运算无意义。二、关系运算两指针变量进行关系运算可表示所指对象的关系:pf1 == pf2; //pf1和pf2指向同一元素。pf1 > pf2; //pf1处于高地址。 pf1 < pf2; //pf2处于高地址。p == 0; //p是空指针。p != 0; ...

2018-08-09 11:32:19 3324

原创 static和const的区别(1)

一、 static 静态关键字用于修饰静态成员变量(共享)和静态成员函数(调用不必依赖实例化的对象)。 仅本文件可见,编译时生成的符号为local。1.1 修饰函数编译器向普通函数添加一个隐式的参数 this指针(类名 *const this);this指针总是指向某个特定对象->普通函数只能由对象去调用。           编译器不会向静态函数添加该指针->函数体内...

2018-08-09 09:06:07 7133

原创 将字符串中出现的空格置换成百分号20(第二次修改)

推荐浏览:将字符串中出现的空格置换成%20(第一次)class Solution {public: void replaceSpace(char *str,int length) { if(str==NULL) return; int i=0; int count=0; //统计空格个数 ...

2018-08-07 22:09:24 494

使用读进程和写进程熟悉unix高级环境编程中出现了消息队列操作函数

压缩包内含4个文件:msg.h(定义消息结构)、msg.c(包含同名头文件)、snd.c(内部转调msgsnd函数发送消息)、rcv.c(内部转调msgrcv接收消息)。重点感受:消息是有类型——这再普通不过的事实。

2018-10-22

利用信号量实现进程间同步

压缩包内含4个文件:a.c,b.c是两个源文件,分别用来模拟读端和写端。semaphore.h和semaphore.c主要实现了sem_init,sem_p,sem_v,sem_del这四个函数(函数体内是转调semget,semctl,semop,这三个函数都是linux提供的库函数)。以一个.txt文件来模拟临界资源。

2018-10-21

空空如也

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

TA关注的人

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