语言入门
文章平均质量分 60
AledaLee
个人博客已经迁移到了https://sites.google.com/site/lishuo02wiki/,主要是一些技术的分享,有需要的可以访问。
展开
-
回旋矩阵的构建方法
首先,你要有一个大体的思路,回旋矩阵的构建方法,简单点的就是一圈一圈的绕,然后你再找找规律,然后就是个小陷阱,就是到最后一圈的宽度等于2和等于的情况考虑.我因为是新手,所以写的代码比较弱智,但是这样应该更容易理解吧?贴上代码:#include #include #include #include int a[100][100];int N;void prepare(int x,原创 2012-07-17 11:31:33 · 1297 阅读 · 0 评论 -
洋气的SPFA
#include #include #include #include using namespace std;const int MAXN = 100 + 11;const int INF = 0x3FFFFFFF;class Edge{public: Edge(); ~Edge(); int getBegin(); void setBeg原创 2014-04-16 22:50:42 · 786 阅读 · 0 评论 -
根据前序,中序求后续
#include #include #include #include #include using namespace std;void postOrder(char *pre, char *in, int len) { if (len <= 0) { return ; } int i; for (i = 0; i < len; i++) { if (in原创 2014-04-19 18:30:35 · 1394 阅读 · 1 评论 -
根据前序,中序构建出BinaryTree
#include #include #include using namespace std;struct TreeNode{ int m_iValue; TreeNode* m_pLeft; TreeNode* m_pRight; TreeNode() { m_pLeft = NULL; m_pRight =原创 2014-04-19 18:27:28 · 940 阅读 · 0 评论 -
双栈模拟队列
#include #include using namespace std;templateclass CQueue{public: T& push(T&); T& front(); void pop();private: stack m_stack1; stack m_stack2;};templateT& CQueue:: pu原创 2014-04-19 20:13:25 · 945 阅读 · 0 评论 -
函数传参
#include #include #include #include using namespace std;int Max(int a, int b){ return a > b ? a : b;}int GetMax(int a[][6], int N, int M){ int iMax = 0; for (int i = 0; i < N;原创 2014-04-22 20:48:41 · 905 阅读 · 0 评论 -
并查集
#include using namespace std;void Init(){ for (int i = 0; i <= N; i++) { set[i] = i; }}int Find(int x){ return set[x] = (set[x] == x ? x : Find(set[x]));}int main()原创 2014-04-24 23:07:16 · 803 阅读 · 0 评论 -
快速幂
#include #include using namespace std;long long QuickPow(int a, int n, int mod){ int ans = 1; while (n) { if (n & 1) { ans = (long long)ans * a % mod;原创 2014-04-24 21:02:33 · 667 阅读 · 0 评论 -
哈希探查的三种方法
#include #include #include #include using namespace std;const int MAXSIZE = 100;int hash[MAXSIZE];int MOD = MAXSIZE - 1; //小于MAXSIZE的一个质数vector hashTable[MAXSIZE];/* 线性探查int LinearProbi原创 2014-04-24 21:41:51 · 1419 阅读 · 0 评论 -
非递归遍历便利二叉树
#include using namespace std;struct TreeNode{ TreeNode* lChild; TreeNode* rChild; int m_iData; TreeNode() { lChild = NULL; rChild = NULL; m_iData = 0;原创 2014-04-24 22:49:27 · 858 阅读 · 0 评论 -
strcpy的需要注意的几点
C++中的strcpy没有原创 2014-04-13 21:50:07 · 1812 阅读 · 3 评论 -
Bitmap操作
#include #include #include using namespace std;const int BYTESIZE = 8;void SetBit(char* p, int position){ for (int i = 0; i < position / BYTESIZE; i++) { p++; } *p = *原创 2014-04-26 22:13:28 · 922 阅读 · 0 评论 -
线索二叉树
#include #include #include using namespace std;struct BinThrNode{ int data;//结点的数据 BinThrNode* lChild;//左孩子 BinThrNode* rChild;//右孩子 bool lTag; //有左孩子是1 bool rTag; //有右孩子是1原创 2014-04-26 16:58:11 · 854 阅读 · 0 评论 -
快排(随机取数)
#include #include #include #include #include #include using namespace std;int partition(int *A, int L, int R, int p){ swap(A[p], A[R]); int i = L; int j = R; int pivot = A[R]; while (i原创 2014-04-14 11:15:10 · 830 阅读 · 0 评论 -
union的用法
#include #include using namespace std;union myUnion{ int m_iVar; char m_cVar[2];};int main(){ myUnion u; u.m_iVar = 0; cout << u.m_iVar << endl; u.m_cVar[0] = 11; //0原创 2014-04-13 22:58:36 · 728 阅读 · 0 评论 -
内存池的简单实现
#include using namespace std;templateclass SimpleMemPool{public: T* New() { if (!m_pFreeChunks) //如果空内存不存在,则重新申请一个大的block; { MemChunk* t = new MemChunk();原创 2014-04-14 10:55:56 · 858 阅读 · 0 评论 -
堆排序
#include #include #include #include using namespace std;void print(int *a, int n){ for (int i = 1; i <= n; i++) { printf("%d ", a[i]); } cout << endl;}void heapify(int *a, int x, int原创 2014-04-14 11:39:13 · 803 阅读 · 0 评论 -
虚函数的实现机制
#include using namespace std;class CBase1 { private: int a; int b; void sayBye() { cout << "Bye, CBase1!" << endl; } public: CBase1() { cout << "Hello CBase1!" << endl;原创 2014-04-16 20:19:43 · 825 阅读 · 0 评论 -
CreateThread()和_biginthreadex()
HANDLE WINAPI CreateThread( _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, _In_ SIZE_T dwStackSize, _In_ LPTHREAD_START_ROUTINE lpStartAddress, _In_opt_ LPVOID lpParameter,原创 2014-04-15 20:04:43 · 1115 阅读 · 0 评论 -
筛选法求10^7以内的素数
以前对素数的筛选法,一直都不是了解的那么透彻.现在总算是知道了一个非常简单,也非常快的算法代码了.其实筛选法,之所以为筛选法 就是先筛,后选.第一步就是筛掉所有的偶数,以为,作为偶数首先它就是能被2正除了,就是合数了.肯定不能要;接着就是选了,选有技巧,选择性的筛除sqrt(n)以内的所有倍数,剩下的就都是素数了.代码如下:#include #include #includ原创 2012-07-17 21:55:06 · 1507 阅读 · 0 评论 -
HUD-1076(简单利用筛法的题目)
其实自己选择做这道题目,就是想巩固一种思路,就是先将所有的可能的结果求出 存到一个数组中,然后算结果的时候直接去取就好,这样可以省了很多时间,比较简单这道题目,看代码:#include #include #include #include bool p[1000005];int main(){ int T; memset(p,0,sizeof(p)); for(int原创 2012-07-29 10:09:28 · 769 阅读 · 0 评论 -
nyist-基础语言-题目24(素数距离问题)
这道题目还是蛮好玩的,运用到了素数的筛选法,对于自己的复习还是不错的,自己有很多细小错误的方面还是没有记住,看代码:#include #include #include #include #include #include #define Maxn 1000011using namespace std;bool p[Maxn];void Init (){ f原创 2012-11-14 22:11:01 · 703 阅读 · 0 评论 -
HDU-1333(素数分解)
所有的,今天是没怎么玩就开始敲代码了..我是喜欢敲代码,也是喜欢解决自己的问题,也是喜欢自己一天一天的进步,但是,我没有那么多的时间陪别人去耗,所以呢,,我现在就得养成那么一个习惯,,学什么知识点就学一遍,然后无数遍的温习,永远的记住.#include #include #include #include #include #include using namespace原创 2012-11-19 21:42:14 · 1025 阅读 · 0 评论 -
基础知识-素数分解
最近才写过一个分解素数的程序,但是那个是先打印出素数表,然后存到数组里面,然后再用那个数去除,我也不知道哪个稍微快一点了,,,大范围的应该就是筛选法先筛选出来的要快一些,但是如果就是判断几个的话,当然就是直接筛选要快一些咯#include #include #include #include #include #include using namespace std;原创 2012-11-19 22:28:16 · 726 阅读 · 0 评论 -
关于运算符重载(泪奔)
我必须要发表一篇博客,我觉得好好玩的,找错误真的是很好玩的.就是什么情况的,就是那个引用: &, 你可一定要注意,引用的实用情况下是必须得有你已经建立好的对象,以及他的名字,你比如你如果这样 Complex & c1 = Complex(1, 2); 这是不可以实现的,因为你这个只是放到了一个临时变量里面,连个名字都米有,哪来的引用!请看代码:#include #includ原创 2012-12-14 21:22:29 · 553 阅读 · 0 评论 -
5.1.1-Wertyu
这里主要设计的难点就是使用常量数组 *s其实还是比较好理解的,先找到这个字符,然后再输出这个字符前面的字符,这个思想就类似于筛选法的那样,先把答案的所有可能都列出来,然后再选取你需要的答案,这样就省去了你以后的工作量了.贴出代码:#include #include #include using namespace std;int main(){ char c;原创 2013-01-28 11:55:58 · 724 阅读 · 0 评论 -
MillerRobin(概率测素数)
学习知识,是一个很享受的过程。尤其是那些自己以前听没听过,但是却又是非常神奇的一种思想的时候。今天上午学习了,快速概率测素数的算法------MillerRobin(),适用于测试单个素数,出错概率比计算机本身出错的概率还要低为(1/4)^(s),一般s取50就可以认为是准确测试出了。算法是基于费马小定理(format),二次探测定理(x*x % p == 1 ,若P为素数,则x的原创 2013-05-15 11:12:20 · 4845 阅读 · 5 评论 -
stringstream的用法详解
使用stringstream对象简化类型转换C++标准库中的提供了比ANSI C的更高级的一些功能,即单纯性、类型安全和可扩展性。在本文中,我将展示怎样使用这些库来实现安全和自动的类型转换。为什么要学习如果你已习惯了风格的转换,也许你首先会问:为什么要花额外的精力来学习基于的类型转换呢?也许对下面一个简单的例子的回顾能够说服你。假设你想用sprintf()函数将一个变量从int转载 2013-07-20 11:21:52 · 1781 阅读 · 0 评论 -
自增、自减运算符的重载
#include using namespace std;class Increment{public: Increment(): m_iVar(0){}; ~Increment(); Increment& operator ++(); const Increment operator ++(int); int getVar();private原创 2014-04-13 19:31:42 · 1006 阅读 · 0 评论 -
operator new 和operator delete的重载应用
#include using namespace std;/* 重载后的operator new实现的功能是,看一看刚刚回收的垃圾堆上还有没有位置, 有位置的话,就直接拿一块下来,用来初始化。*/class FreeListBase{public: FreeListBase(): next(NULL){}; virtual ~FreeListBas原创 2014-04-13 18:31:29 · 850 阅读 · 1 评论 -
自增、自减运算符的运算
#include using namespace std;int main(){ int a = 1; a = a+++a; // a = 3 int b = 1; b = b+++(++b);// b = 4; int c = 1; ++c = c+++c++;// c = 5; 第一部执行的是等号左边的++c return 0;原创 2014-04-13 19:09:49 · 1342 阅读 · 0 评论 -
priority_queue的正确使用方法
其实priority_queue的正确用法:#include #include #include using namespace std;class Node{public: Node(){Node(0);} Node(int v): m_iVar(v){}; ~Node(){} bool operator < (Node& t); in原创 2014-04-13 22:28:07 · 1316 阅读 · 0 评论 -
合并排序
#include #include #include #include const int INF = 0x7fffffff;using namespace std;void merge(int *a, int l, int mid, int r) { int L[100]; int R[100]; int cnt = 0; for (int i = l; i <=原创 2014-04-14 11:27:53 · 743 阅读 · 0 评论 -
WinSock客户端和服务端(select模型)
客户端:服务端:原创 2014-04-15 22:19:12 · 1252 阅读 · 0 评论 -
C++一些宏定义
#include #define PI 3.1415926 //#define #define MIN(X, Y) (X) () #define Conn(X, Y) X##Y //简单的把x和y连接起来,但不处理。即Conn(a, 2)--->a2, 编译的时候,如果没有a2就会报错。//#define TOCHAR(X) #@X 不可以这样使用#define TOSTRING(X原创 2014-04-16 13:13:52 · 842 阅读 · 0 评论 -
swap的方法书写
#include using namespace std;int swap1(int& x, int& y){ x += y; y = x - y; x = x - y;}int swap2(int& x, int& y){ x ^= y; y ^= x; x ^= y;}int main(){ int x = 1,原创 2014-04-13 19:46:04 · 788 阅读 · 0 评论