代码改变世界

随笔分类 -  C++相关

经典算法学习之贪心算法

2015-04-10 10:08 by itwolf, 1803 阅读, 收藏,
摘要: 贪心算法也是用来求解最优化问题的,相比较动态规划很多问题使用贪心算法更为简单和高效,但是并不是所有的最优化问题都可以使用贪心算法来解决。贪心算法就是在每个决策点都做出在当时看来最佳的选择。贪心算法的设计步骤:1、将最优化问题转换为:对其做出一次选择之后,只剩下一个问题需要求解的形式(动态规划会留下多... 阅读全文

经典算法学习之动态规划

2015-04-07 14:53 by itwolf, 6443 阅读, 收藏,
摘要: 动态规划方法通常用来求解最优化问题。适合使用动态规划求解最优化问题应具备的两个要素:1、最优子结构:如果一个问题的最优解包含子问题的最优解,那么该问题就具有最优子结构。2、子问题重叠(如果子问题不重叠就可以用递归的方法解决了)具备上述两个要素的问题之所以用动态规划而不用分治算法是因为分治算法会反复的... 阅读全文

C库函数手册(ctype.h)

2015-04-02 10:30 by itwolf, 318 阅读, 收藏,
摘要: ctype.h函数说明:int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0int isdigit(int ch) 若ch是数字('0'-'9')返回非0值,否则返回0int isalnum(int ch) 若ch是字母('A'-'Z','a'... 阅读全文

连续多行输入--C++ 中字符串标准输入的学习及实验(续篇)

2015-03-31 14:16 by itwolf, 1622 阅读, 收藏,
摘要: 编程中常常会用到连续多行输入的情况,如果事先知道要输入多少行的话,可以直接定义一个变量,然后用循环就可以实现了,但有时候事先并不知道,要输入多少行,于是就可以用到输入流碰到文件终止符的情况了,具体的操作就是ctrl+Z,然后按下回车键程序例1 1 #include 2 #include 3 #inc... 阅读全文

C++ string类的学习

2015-03-30 19:03 by itwolf, 496 阅读, 收藏,
摘要: string类对于处理字符串的一些应用非常的方便,我个人感觉,string和字符数组const char *很像,而且又比字符数组用起来方便的多。注意其删除,取子串,插入等函数里面都有一个重载版本是使用偏移量来操作的,注意其默认值是不同的,erase和substr里面的默认值是偏移量为0,个数是np... 阅读全文

C++ 隐式类型转换

2015-03-30 14:44 by itwolf, 915 阅读, 收藏,
摘要: C++定义了一组内置类型对象之间的转换标准,在必要的时候它们被编译器隐式的转换1、任何两种或多种类型的数据和变量混合操作的时候,最宽的数据类型成为目标转换类型(常量和变量都会被改变)2、不同类型的表达式之间赋值的时候,被赋值的对象类型成为目标转换类型3、函数调用实参和形参类型不一致的时候,形参的对象... 阅读全文

转载:C++ STL set学习

2015-03-30 14:34 by itwolf, 253 阅读, 收藏,
摘要: 声明:本文转载自Penguin的博客http://blog.sina.com.cn/s/blog_779cf3410101389s.html1,set的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,查找等操作,就 像一个集合一样。所有的操作的都是严格在logn时间之内完成,... 阅读全文

C++ 中字符串标准输入的学习及实验

2015-03-28 11:09 by itwolf, 1001 阅读, 收藏,
摘要: 声明:下面实验中[]里面表示要输入里面的符号,[]符号本身并未输入1、cin>>cin使用空白(空格、制表符、回车)来确定字符串的结束位置。cin会将换行符留在输入输出队列中。 1 #include 2 using namespace std; 3 4 int main() 5 { 6 c... 阅读全文

C++中求两个正整数的最大公约数和最小公倍数

2015-03-27 09:41 by itwolf, 2477 阅读, 收藏,
摘要: 最大公约数直接用辗转相除法,最小公倍数就是两个数的乘积除以最大公约数#includeusing namespace std;int gys(int x,int y){ return y? gys(y,x%y):x;}int main(){ int x,y; cin>>x>>y... 阅读全文

C++中巧妙的位运算

2015-03-25 10:30 by itwolf, 524 阅读, 收藏,
摘要: 位运算要多想到与预算和异或运算,并常常将两个数对应位上相同和不同分开处理一、x&(x-1)消除x二进制中最右边的一个1。这个比较厉害,比如统计某个二、与和异或的巧妙结合的思想与运算可以取出两个二进制数中都有1的部分,异或可以求出两个二进制数中只有一个有1的部分,所以运用位运算的时候可以将两个数用与和... 阅读全文

C/C++中static关键词的作用

2015-03-25 10:08 by itwolf, 233 阅读, 收藏,
摘要: 1、在函数体内的static变量作用范围是该函数体,其只被内存分配一次,所以在下次调用的时候会保持上一次的值。2、模块内的static全局变量可以被模块内的所有函数访问,但不能被模块外的函数访问。3、模块内的static函数可以被模块内的其他函数访问,但不能被模块外的函数访问。4、类中的static... 阅读全文

sizeof(数组)

2015-03-23 21:10 by itwolf, 321 阅读, 收藏,
摘要: 这里就不讨论一般的数组长度计算了,只说明一下任何数据到了函数的形参中都将退化为指针,所以计算大小的时候,也是计算的指针的大小直接上代码了 1 // class sizeof测试.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include... 阅读全文

C++中const小结

2015-03-23 20:00 by itwolf, 202 阅读, 收藏,
摘要: 1、const修饰普通变量(非指针变量)const修饰变量,一般有两种写法:const TYPE value;TYPE const value;对于一个非指针的类型TYPE,这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是只读的。2、const修饰指针变量通用... 阅读全文

case语句居然还可以这么用的

2015-03-23 10:19 by itwolf, 613 阅读, 收藏,
摘要: 直接上代码了// switch case case语句测试.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing namespace std;int _tmain(int argc, _TCHAR* argv[]){ int num; cin>... 阅读全文

sizeof(结构体)的计算

2015-03-22 11:54 by itwolf, 16146 阅读, 收藏,
摘要: 摘要:经常被计算结构体的sizeof给搞晕,于是找了个时间,静下心来,搞定它。一、为什么结构体计算这么乱?答案是字节对齐,计算机存储系统中以Byte为单位存储数据,不同数据类型所占的空间不同,如:整型(int)数据占4个字节,字符型(char)数据占一个字 节,短整型(short)数据占两个字节,等... 阅读全文

二分查找

2015-03-12 14:18 by itwolf, 209 阅读, 收藏,
摘要: 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。C++源代码: 1 // 二分查找.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h"... 阅读全文

转:归并排序

2015-03-12 13:04 by itwolf, 244 阅读, 收藏,
摘要: 声明:本文转载自:MoreWindows 的白话经典算法系列之五 归并排序的实现。原文的链接:http://blog.csdn.net/morewindows/article/details/6678165归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Co... 阅读全文

C++ STL stack和queue

2015-03-10 09:55 by itwolf, 354 阅读, 收藏,
摘要: C++ STL中独立的序列式容器只有vector,list,deque三种,stack和queue其实就是使用容器适配器对deque进行了封装,使用了新接口。使用标准库的栈和队列时,先包含相关的头文件#include#include定义栈如下:stack stk;定义队列如下:queue q;栈提供... 阅读全文

为什么无返回值的链表的插入操作头结点一定要用指向指针的指针

2015-03-09 15:43 by itwolf, 1846 阅读, 收藏,
摘要: 前言:为什么链表的插入操作头结点一定要用指向指针的指针?之前自己对这个问题总是一知半解,今天终于花了点时间彻底搞懂了。总的来说这样做的目的是为了应对“空链表”的情况。为了防止往一个空链表中插入一个结点时,新插入的结点那就是链表的头指针,这时如果链表的结点是一级指针的话,那么出了链表插入函数的作用域后... 阅读全文

常量字符串和指针

2015-03-09 10:52 by itwolf, 361 阅读, 收藏,
摘要: 为了节省内存,C++把常量字符串单独放在一个内存区域,如果有几个指针指向相同的常量字符串时,它们实际上指向的是相同的内存地址。而数组是要每一个数组单独占用一块内存的 1 #include "stdafx.h" 2 #include 3 using namespace std; 4 5 int _... 阅读全文