- 博客(30)
- 收藏
- 关注
转载 红黑树代码
原文链接:http://www.mamicode.com/info-detail-1431070.html#define BLACK 1#define RED 0using namespace std;class bst {private: struct Node { int value; bool color; Node
2017-08-16 18:12:04
334
原创 windows可视化编程(6)
这章总结下mfc常用的控件,控件比较多,给出一些常见的模板①button对于普通按钮最常见的就是点击事件了void CMy9_1Dlg::OnButton1() { // TODO: Add your control notification handler code here m_btn1.SetWindowText("你已按下了按钮!");//设置按钮上的文字}单选按钮
2017-08-08 23:24:34
689
原创 windows可视化编程(五)
#include "c:\prog_book\7_1\7_1.h"#include "windows.h"MENU MENU DISCARDABLE BEGIN POPUP "文件(&F)" BEGIN MENUITEM "创建统计计算菜单项(&P)\t Ctrl+P", IDM_ADDMENU MENUITEM "删除统计计算菜单项(&D)\
2017-08-07 21:41:16
1346
原创 windows可视化编程(四)
这章总结以下鼠标和键盘事件,先上示例程序://消息处理函数long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam){#define BufSize 15 //设置存放字符的缓冲区大小 static char cCharBuf[BufSize]; //设置静态字符数组,存放输入的字符,字符个数不能超出
2017-08-07 21:06:24
686
原创 windows可视化编程(三)
这章总结下文本操作,先上一个简单的文本输出程序:LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam){ static long nXChar,nCaps,nYChar; HDC hDC; //定义指向设备上下文的句柄 short x; TEXTMETRIC tm; shor
2017-08-07 20:55:15
972
原创 windows可视化编程(二)
这节总结下笔刷的使用,首先看程序#include#include#includelong WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);BOOL InitWindowsClass(HINSTANCE hInstance);BOOL InitWindows(HINSTANCE hInstance,int
2017-08-07 20:42:27
2259
原创 windows可视化编程(一)
最近在看mooc上的 VC++可视化编程,边看边做点记录吧首先是一个空壳的程序架构#include LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); //窗口函数说明//------------ 以下初始化窗口类----------------int WINAPI WinMain(HINSTANCE hInstance,HINST
2017-08-07 20:26:24
3026
原创 哈夫曼树和哈夫曼编码
哈夫曼树要解决的问题是对不同频率元素查找的效率最高,哈夫曼编码代码如下:首先要明白,哈夫曼树要查找的元素都在叶结点上,而且哈夫曼树的最终元素是确定的为2*n-1个。这样我们可以用结点数组来表示树,每一个结点的 child和parent指向自己的父亲和儿子的索引。首先实现select函数,从结点数组选出权重最小的两个合并,存储新结点,构造出哈夫曼树,然后从叶结点开始向上查找,左儿子为0,右儿子为
2017-08-06 20:58:04
611
原创 AVL旋转操作详解
第一种旋转方式是LL类型,如图所示:k2的左边比右边高了2,说明X的高度比Z高1代码如下void LL_Rotate(AVLNode* &p) { AVLNode * lc = NULL; lc = p->lchild; //lc指向p的左子树根结点 p->lchild = lc->rchild; //lc的右子树挂接
2017-05-13 15:11:35
719
原创 HDU1087 最简单的lis动态规划
#include#include#define INF 0x3f3f3fusing namespace std;int dp[10001];int num[10001];int main(){ int n; while (cin >> n,n) { for (int i = 1; i <= n; i++) cin >> num[i]; dp[1] = num[1]
2017-05-08 18:01:29
363
原创 HDU1003 最长子序列和 max sum
序列型的动态规划找状态一般考虑起始开始的点。例如这题状态是以i结尾的序列的最长子序列和dp[i]。#include#includeusing namespace std;#define INF 0x3f3f3f3fint dp[100001];int num[100001];int first[100001];int main(){ int m; while (cin >>
2017-05-08 16:59:03
288
原创 反字典序输出整数所有分割方式
来源是《C语言名题精选百则》算法思想是:(1)每次从数中抽取一个残留数sum。如果结尾不是1,sum为1,如果结尾是1,sum是所有1的和加1.(2)抽取sum后原来的数变成size。再用size去分sum。(3)sum%size作为最后一个数。/* ------------------------------------------------------ *//* PRO
2017-05-07 15:01:39
463
原创 字典序全排列
C语言名题百则的字典序排列程序好像优点问题。。。参考了另外一位大神的程序思路就是先确定排列个数,然后每次从排列从右往左找出第一个逆序数,再将其与右边最小的数交换,然后将右边数反转。#include #includeint a[10], N;int cmp(const void *a, const void *b){ return *(int*)a - *(int*)b;}
2017-05-06 17:30:15
656
原创 旋转法列出所有排列
代码如下:/* ------------------------------------------------------ *//* PROGRAM permutation by rotation : *//* Give an integer n, this program generates all *//* possibl
2017-05-06 14:29:00
546
转载 矩阵运算总结
#define LL __int64 using namespace std; const int MAXN = 5; // 矩阵的最大行和列 const int MOD = 1e5; // 如果可以不用取模,则尽量不用 const double eps = 1e-6; // 处理细小的
2017-05-02 19:12:12
622
原创 图论-网络流
最大流#include #include #include #include #include #include #include using namespace std; const int N = 1100; const int INF = 0x3f3f3f3f; struct Node { int to;//终点
2017-04-30 15:48:51
293
原创 hdu1010 经典的DFS+奇偶剪枝
这题很久以前做的,不过当时没AC - -后来发现是count没有放在代码里面(注意有多组测试数据 - -)DFS注意回溯的话要把访问标记重置。剪枝代码放在DFS两个地方,一个是访问领接点之前,这是对一个点状态剪枝,另外一个是放在访问领接点的代码里,是对多个状态的比较关系剪枝。奇偶剪枝:剩余步数和最小步数的奇偶性相同#includeusing namespace std;#def
2017-04-30 13:42:48
332
原创 堆的操作
堆就是优先队列,每次取都是权重最小最大数typedef struct HNode *Heap; /* 堆的类型定义 */struct HNode { ElementType *Data; /* 存储元素的数组 */ int Size; /* 堆中当前元素个数 */ int Capacity; /* 堆的最大容量 */};typedef
2017-04-29 23:37:58
265
原创 图论-最小生成树算法
Prim算法void prime() { int i,j,min,mindis=0,next; memset(tree,0,sizeof(tree)); for(i=1;i<=point;i++) { lowdis[i]=map[begin][i];//用lowdis[]数组记录下从起点到剩下所有点的距离 }
2017-04-29 23:10:53
346
原创 hdu1385
重点是打印路径的方法#include#include#include#include#define MAX 10000#define INF 0X3f3f3f3fusing namespace std;int G[MAX][MAX];int dp[MAX][MAX];int path[MAX][MAX];int tax[MAX];int n;void Floyd()
2017-04-29 18:14:48
322
原创 HDU 2544 最短路dijstra算法
#include#include#include#include#define MAX 0x3f3f3f// MAX设置要注意 using namespace std;struct Node{ int time; int from; int to;};int visit[101];int dis[101];typedef vector*Graph;void add_
2017-04-29 14:04:02
419
原创 图论算法-搜索
BFSbool visited[MAX_VERTEX_NUM); //访问标记数组 void BFSTraverse(Graph G){ //对图G进行广度优先遍历,设访问函数为visit() for(i=0;i<G.vexnum;i++) visited[i]=FALSE; //访问
2017-04-29 10:27:32
642
原创 图论算法-并查集
初始化把set所有值设为-1(都是根),合并两个集合的时候,先用find函数找出各个集合的根,寻找根的时候利用递归进行路径压缩,都指向根结点。合并的时候先比较规模,由于是负数,更大值更小。void Union( SetType S, SetName Root1, SetName Root2 ){ /* 这里默认Root1和Root2是不同集合的根结点 */ /* 保证小集合并入大
2017-04-27 11:13:39
402
原创 图论算法-建图和最短路
建图方法:详细参见http://blog.youkuaiyun.com/stay_accept/article/details/50886067常见两种:联表法#include #include #include #include #include using namespace std; int N,M; struct node{ int t
2017-04-26 13:36:00
539
原创 POJ2299 树状数组+离散化
树状数组主要两个操作,求和,修改#include#includeusing namespace std;#define N 500001int c[N];int n;struct Node{ int val; int pos;};Node node[N];int a[N];int lowbit(int x){ return x&(-x);}int sum(in
2017-04-26 11:56:51
324
原创 HDU3791
测试数据没错 找了半天不知道错在哪。。一直WAhttp://acm.hdu.edu.cn/showproblem.php?pid=3791#include#includeusing namespace std;typedef struct treenode{ struct treenode* left; struct treenode* right; int data;
2017-04-25 23:04:30
417
原创 二叉树知识总结
二叉树的定义:typedef char ElementType; typedef struct BiTreeNode { ElementType data; struct BiTreeNode* lchild; struct BiTreeNode* rchild; }BiTreeNode, *BiTree; 二叉树的创建://递归
2017-04-25 17:43:41
347
原创 HDU2194 二维完全背包
之前还没碰到过二维的,不过和一维方法类似,主要搞清楚每一个物品会导致哪个量变化,会受哪些量限制,限#include#include#define MAX 101using namespace std;int dp[MAX][MAX] ,c[MAX],w[MAX];//dp为j点忍耐值,x次可以获得的最大经验int main(){ int n, m, k, s; while (c
2017-04-25 11:08:10
372
原创 hdu2844 多重背包+二进制优化
直接用多重背包,超时#include#include#define INF 1000using namespace std;int main(){ int n,m; while (cin >> n >> m, m,n) { int *c= new int[n]; int *w= new int[n]; int *num = new int[n]; for (in
2017-04-24 16:29:51
373
转载 背包问题模板
01背包模板int main() { int i, j, n, m; while(scanf("%d",&n)!=EOF) { scanf("%d", &m); for(i=0; i<n; i++) scanf("%d%d", &wei[i],&val[i]);//wei[i]为重量,v
2017-04-24 08:48:33
310
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人