- 博客(65)
- 资源 (25)
- 收藏
- 关注
转载 c语言--求两圆交点
已知两圆圆心坐标及半径求两圆交点 (C语言|参数方程求解) 在一个二维平面上给定两个圆的圆心横纵坐标、半径共6个参数, 求交点. 这个问题无非是解二元二次方程组.普通二元二次方程联立消元求解的困难在于, 中间过程里的系数会变得非常复杂, 从而导致容易出错---因为公式毕竟还是要人来推导,人的出错率比计算机要高得多得多---改用圆的参数方程求解, 可以在显著地减轻这个负担.
2015-01-14 18:00:38
1464
转载 三十分钟掌握STL
这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。译者:karycontact:karymay@163.netSTL概述STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离
2014-12-28 14:57:27
485
转载 STL学习小结
STL就是Standard Template Library,标准模板库。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有list, vector,set,map等,STL也是算法和其它一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。是C++标准库的一个重要组成部分,它由Stepanov and Lee等人最
2014-12-28 14:30:08
565
转载 从数列1,2,3,......,n中随意取出几个数,使其和等于m
问题描述: 输入两个整数n和m,从数列1,2,3,.......n中随意去几个数,使其和等于m,要求将其中所有可能的组合列出来。解决思路: 这个问题其实是背包问题的变形,给出两种解决方法。 解法一: 用递归,效率可能低了点。假设问题的解为F(n,m),可分为两个子问题F(n-1,m-n)和F(n-1,m)。对于这两个问题递归求解,求解的过程中,如果找
2014-11-03 10:29:25
1858
转载 智力题
1、有1000桶酒,其中一桶有毒。而一旦吃了,毒性会在一周内发生。现在我们用小老鼠做实验,要在1周内找出那桶毒酒,问最少需要多少老鼠?【答案】思路 10只老鼠按顺序排好每桶酒按照编号转换成二进制,给相应位置上是1的老鼠喝。最后按死掉的老鼠是哪几只,然后排成二进制,再转成十进制就是第几桶酒。 比如: 第70桶酒,70转换成二进制就是0001000110,那么就给第四
2014-11-03 10:26:08
565
转载 C++中四种强制类型转换的区别
使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast。1、static_cast 用法:static_cast (expression) 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法: (1)用于类层次结构中基类和
2014-11-03 10:14:39
405
转载 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
最大子序列最大子序列是要找出由数组成的一维数组中和最大的连续子序列。比如{5,-3,4,2}的最大子序列就是 {5,-3,4,2},它的和是8,达到最大;而 {5,-6,4,2}的最大子序列是{4,2},它的和是6。你已经看出来了,找最大子序列的方法很简单,只要前i项的和还没有小于0那么子序列就一直向后扩展,否则丢弃之前的子序列开始新的子序列,同时我们要记下各个子序列的和,最后找到和最大的
2014-11-02 21:28:18
454
转载 统计一个无序数组中出现次数最多的元素
统计一个无序数组中出现次数最多的元素。可以有的一种解法是先对数组排序,所有相同的元素都会集中到一起,再进行一次遍历就能解决问题。问题是时间的复杂度比较大,不满足一些场合下的要求。n个元素的数组,有k个不同的元素。如果频率最高的元素的频率大于50%,下面一个简单的实现可以解决问题。只需要一次遍历。[cpp] view plaincopy#include
2014-11-02 21:25:59
3278
2
转载 关于数组的几道面试题
数组求和求数组中的最大值和最小值求数组中的最大值和次大值求数组中出现次数超过一半的元素求数组中元素的最短距离求两个有序数组的共同元素求三个数组的共同元素找出数组中唯一重复的元素找出出现奇数次的元素求数组中满足给定和的数对最大子段和最大子段积数组循环移位字符串逆转组合问题合并两个数组重排问题找出绝对值最小的元素数组求和
2014-11-02 21:10:53
532
转载 C++实现常见排序算法
本程序参考了网上各位大牛和数据结构中的程序,VS2005运行通过,如有问题,请各位大牛指正。实现的排序有:直接插入排序、折半插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序等等#include using namespace std; const int len = 100; class CSort { public: CS
2014-10-09 10:46:51
453
转载 C++_运算符重载
么是运算符的重载? 运算符与类结合,产生新的含义。 为什么要引入运算符重载? 作用:为了实现类的多态性(多态是指一个函数名有多种含义)怎么实现运算符的重载?方式:类的成员函数 或 友元函数(类外的普通函数)规则:不能重载的运算符有 . 和 .* 和 ?: 和 :: 和 sizeof友元函数和成员函数的使用场
2014-10-09 10:14:21
397
转载 二路归并排序,C++代码实现
#include using namespace std; typedef struct { int r[100+1]; int length; }SqList; //二路归并函数 void Merge(SqList &L,int low,int m,int high) {//将两个有序区归并为一个有序区 in
2014-10-08 18:52:52
957
转载 虚函数与虚继承寻踪
封装、继承、多态是面向对象语言的三大特性,熟悉C++的人对此应该不会有太多异议。C语言提供的struct,顶多算得上对数据的简单封装,而C++的引入把struct“升级”为class,使得面向对象的概念更加强大。继承机制解决了对象复用的问题,然而多重继承又会产生成员冲突的问题,虚继承在我看来更像是一种“不得已”的解决方案。多态让对象具有了运行时特性,并且它是软件设计复用的本质,虚函数的出现为多态性
2014-09-19 14:33:00
390
转载 Bridge模式(桥接模式 )
6.1 概述Bridage模式就是把抽象部分和它的实现部分分离开来,让两者可独立变化。这里的抽象部分指的是一个概念层次上的东西,它的实现部分指的是实现这个东西的(功能)部分,分离就把实现部分从它要实现的抽象部分独立出来,自我封装成对象。6.2 设计思路简单理解就是:在类中抽离方法形成另一个类。比如对于动物狗,有行走功能。一般我们设计时,把狗设计成一个类,
2014-09-18 21:49:05
1456
转载 Builder模式(创建者模式)
1.概念 《设计模式》一书中对于建造者模式是这样定义的:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。其实建造者模式就是用来创建复合对象,并把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。有点拗口,首先我们来看看它的UML图: Builder:为创建一个Product对象的各个部件制定抽象接口。 Conc
2014-09-18 21:17:56
402
转载 Prototype模式(原型模式)
Prototype模式(原型模式)的基本原理是我们想利用已有的对象,复制大量同类的对象。在C++中,利用拷贝构造函数是实现复制对象的最好方法。 Prototype模式的实现方法是在基类中定义一个Clone的虚函数,然后在派生类中改写该虚函数,并在派生类的Clone函数中调用该类的拷贝构造函数,每调用一次,就生成了一个拷贝的对象。 实例代码://基类class CShape
2014-09-18 19:36:19
520
转载 Factory模式(工厂模式)
1. 场景 假设有如下的场景: 卖pizza的, 可以有很多种pizza(CheesePizza, GreekPizza, PepperoniPizza),我们该如何处理它呢,当然我们可以声明一个类,类中创建每一个种类的pizza。但是这样有什么问题吗?我们没有把需要改变的部分剥离出来。软件设计的一个原则就是“是易于扩充而不是修改”,另一个是“对接口编程而不是对实现编程
2014-09-18 19:33:51
518
转载 操作系统内存管理之 内部碎片vs外部碎片
“碎片的内存”描述一个系统中所有不可用的空闲内存。这些资源之所以仍然未被使用,是因为负责分配内存的分配器使这些内存无法使用。这一问题通常都会发生,原因在于空闲内存以小而不连续方式出现在不同的位置。由于分 配方法决定内存碎片是否是一个问题,因此内存分配器在保证空闲资源可用性方面扮演着重要的角色。internal fragmentation:when memory alloca
2014-04-27 20:48:28
684
转载 动态链接库和静态链接库的区别
静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件;动态链接就是把调用的函数所在文件模块(DLL)和调用函数在文件中的位置等信息链接进目标程序,程序运行的时候再从DLL中寻找相应函数代码,因此需要相应DLL文件的支持。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生
2014-04-27 11:59:20
423
原创 虚函数与默认实参
像其他任何函数一样,虚函数也可以有默认实参。通常,如果有用在给定调用中的默认实参值,该值将在编译时确定。如果一个调用省略了默认值的实参,则所用的值由调用该函数的类型定义,与对象的动态类型无关。通过基类的引用或指针调用虚函数时,默认实参为在基类虚函数生命中定义的值,如果通过派生类的指针或者引用调用虚函数,则默认实参是在派生类的版本中声明的值。在同一虚函数的基类版本和派生类版本中使用不同的默认
2014-04-09 21:29:33
495
转载 几种常用的数字滤波器
1、限幅滤波法(又称程序判断滤波法)A、方法:根据经验判断,确定两次采样允许的最大偏差值(设为A)每次检测到新值时判断:如果本次值与上次值之差如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值B、优点:能有效克服因偶然因素引起的脉冲干扰C、缺点无法抑制那种周期性的干扰平滑度差2、中位值滤波法A、方法:连续采样N次(N取奇
2014-04-06 16:52:30
1475
转载 存储类型auto,static,extern,register的区别
变量和函数的属性包括数据类型和数据的存储类别,存储类别指数据在内存中存储方式(静态和动态),包含auto,static,register,extern四种。内存中。具体点来说内存分为三块:静态区,堆区,栈区。外部变量和全局变量存放在静态区,局部变量存放在栈区,动态开辟的内存存在堆区。 一、简要性比较extern 外部变量声明,是指这是一个已在别的地方
2014-03-29 15:06:56
606
转载 贝叶斯公式
贝叶斯定理由英国数学家贝叶斯 ( Thomas Bayes 1702-1763 ) 发展,用来描述两个条件概率之间的关系,比如 P(A|B) 和 P(B|A)。按照乘法法则:P(A∩B)=P(A)*P(B|A)=P(B)*P(A|B),可以立刻导出 贝叶斯定理公式:P(A|B)=P(B|A)*P(A)/P(B) 如上公式也可变形为:P(B|A)=P(A|B)*P
2014-03-22 20:36:00
727
转载 一个应用实例详解卡尔曼滤波及其算法实现
为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大多数参考书那样罗列一大堆的数学公式和数学符号。但是,他的5条公式是其核心内容。结合现代的计算机,其实卡尔曼的程序相当的简单,只要你理解了他的那5条公式。在介绍他的5条公式之前,先让我们来根据下面的例子一步一步的探索。假设我们要研究的对象是一个房间的温度。根据你的经验判断,这个房间的温度是恒定的,也就是下一
2014-03-22 20:33:39
1060
转载 卡尔曼滤波的原理说明
在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人!卡尔曼全名Rudolf Emil Kalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯。1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位。1957年于哥伦比亚大学获得博士学位。我们现在要学习的卡尔曼滤波器
2014-03-22 19:53:21
664
原创 C++虚函数继承操作
using namespace std;class ClassA{public: ClassA() {cout ~ClassA() {cout void F1() {cout virtual void F2() {cout };class ClassB : public ClassA{publ
2014-03-20 16:39:23
522
转载 static_cast 与 dynamic_cast 的区别
强制类型转换运算符:C++有四种强制类型转换符,分别是dynamic_cast,const_cast,static_cast,reinterpret_cast。其中dynamic_cast与运行时类型转换密切相关,在这里我们先介绍dynamic_cast,其他三种在后面介绍。 6.1、dynamic_cast强制转换运算符:该转换符用于将一个指向派生类的基类指针或引用转换为派生类的指针或引用
2014-03-17 21:28:20
581
转载 求乘积最大组
长度为n的整形数组,找出其中任意n-1个乘积最大的那一组,只能用乘法,不可以用除法。要求对算法时间复杂度和空间复杂度进行分析。#include #include #include #include int ret1Index(const int myArray[], const int n)//返回1个不包含在n-1个因子乘积最大组合中的因子下标{
2014-03-05 15:00:05
596
转载 实现两个N*N矩阵的乘法,矩阵由一维数组表示
#includeusing namespace std;#define size 2int * multi(int* a, int* b, int N){ int i,j,k,temp; int * c = (int *)malloc(N*N); for(i=0;i { for(j=0;j {
2014-03-05 14:54:31
613
转载 MFC的列表控件的使用
1.初始化列表?12345678910111213141516//初始化List m_list.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKAC
2014-01-03 15:45:14
664
转载 MFC中单选框和复选框的选择
单选钮用来表示一系列的互斥选项,这些互斥项常常被分成若干个组,每组仅允许用户选择一个选项;复选框与单选按钮相象,不同之处是复选框代表多重选择,用户可以选择一个或多个选项。 void CCBaseButtonDlg::OnCheckin() {// TODO: Add your control notification handler code hereGetDlgItem(
2014-01-03 10:13:46
1214
转载 VS2010/MFC编程入门之二十六(常用控件:滚动条控件Scroll Bar)
滚动条控件简介 滚动条大家也很熟悉了,Windows窗口中很多都有滚动条。前面讲的列表框和组合框设置了相应属性后,如果列表项显示不下也会出现滚动条。滚动条分为水平滚动条(Horizontal Scroll Bar)和垂直滚动条(Vertical Scroll Bar)两种。滚动条中有一个滚动块,用于标识滚动条当前滚动的位置。我们可以拖动滚动块,也可以用鼠标点击滚动条某一位置使滚动块
2013-12-15 12:06:22
858
转载 MFC中MessageBox和AfxMessageBox的用法
一、消息框是个很常用的控件,属性比较多,本文列出了它的一些常用方法,及指出了它的一些应用场合。1.MessageBox("这是一个最简单的消息框!");2.MessageBox("这是一个有标题的消息框!","标题");3.MessageBox("这是一个确定 取消的消息框!","标题", MB_OKCANCEL );4.MessageBox("这是一个警告的消息框!","标题",
2013-12-14 17:31:35
11251
转载 C++中char*与wchar_t*之间的转换
关于C++中的char*与wchar_t*这两种类型的相互转换,网上说的大多很繁琐,可行性也不高。下面这个方法是在MSDN里面找到的,个人认为还比较不错:把char*转换为wchar_t*用stdlib.h中的mbstowcs_s函数,可以通过下面的例子了解其用法:char *CStr ="string to convert";size_t len = strlen(C
2013-12-13 15:38:42
641
转载 VS2008下面将 CString转化为char* 的问题
VS2008下面将 CString转化为char* 的问题 使用CString的GetBuffer方法CString origCString("Hello,World");char* CharString = origCString.GetBuffer(origCString.GetLength()+1);网上的很多文章说的都是这个方法,但是我在VC++20
2013-12-13 11:37:39
790
转载 孙鑫MFC笔记(15)--多线程和聊天室的创建
孙鑫MFC笔记(15)--多线程和聊天室的创建代码1分析:说明:对于单核cpu的电脑来说,线程都在自己的时间片中运行,单位时间内,系统只能运行一个线程,交替运行;对于多核cpu或多cpu的电脑来说,才是真正意义上的单位时间内运行多个线程说明:如果采用向导创建的Win32 Console程序选择的是空项目时,则以下使用方式是正确的,如果选择是”hello world”的简单应用程
2013-12-11 10:43:22
1615
原创 多线程控制台TCP聊天工具
服务器程序:// Server.cpp : Defines the entry point for the console application.//#include "stdafx.h"#define BUF_SZIE 64#include "winsock2.h"#pragma comment(lib, "ws2_32.lib")char buf[BUF_
2013-12-11 10:21:01
945
转载 类的静态成员函数和静态成员变量的使用
C++类静态成员与类静态成员函数 当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。静态方法就是与该类相关的,是类的一种行为,而不是与该类的实例对象相关。 静态数据成员的用途之一是统计有多少个对象实际存在。
2013-12-09 19:57:58
542
原创 结构体操作
#includestruct point{ int *p; int a;};int main(){ point *p_x; point y; int m=6; p_x=&y; y.a=5; y.p=&m; int d=*y.p; int c=*p_x->p; int f=y.a; int g=(*p
2013-12-05 00:04:27
459
转载 ofstream和ifstream详细用法
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout2、析取器(>>) 从流中
2013-11-29 20:58:37
464
计算几何算法
2015-01-18
计算几何算法大全
2015-01-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人