自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 再谈排列组合

运用回溯进行排列组合生成的时候有一些特殊情况,在这里集中讨论

2015-10-19 21:33:45 354

原创 关于回溯模型的两种解空间树

做出解空间树对于回溯(DFS)还是挺有帮助的

2015-10-19 21:29:54 3141

原创 分治-二叉树重建

分治法解决二叉树重建

2015-10-19 20:40:37 325

原创 区间DP-由矩阵连乘所想到的

一个转移方程的应用

2015-10-19 20:31:57 284

原创 一般DP-双调取数问题

双调取数与独立取数问题

2015-10-19 20:25:45 253

原创 区间DP-矩阵连乘问题

#include #include #include #include #include #include #include #include #include /*=======================================矩阵连乘问题dp(i, j) = min( dp(i, k) + dp(k + 1, j) + S);

2015-10-19 20:23:25 295

原创 Node:二叉树搜索

为了看看二叉树重建,复习了一下二叉树(指针实现)#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))typedef long long int64;using namespace std;const int maxn=10010

2015-07-24 12:02:38 380

原创 Node:状压DP-1(棋子问题)

#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))using namespace std;const int maxn = 310;int n, dp[10][maxn];/*在一个棋盘上放棋子,上下左右都没有棋子,一共有多

2015-07-20 14:10:03 283

原创 Node:向经典致敬(八皇后)

#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))using namespace std;const int maxn=110;bool l[maxn], raw[maxn], r[maxn];/*n皇后经典回溯法,好久不

2015-07-20 09:35:42 356

原创 Node:Trie数(字典树)

为了看一看AC自动机,先看看Trie树#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))using namespace std;const int maxn=26;int n;/*Trie树(字典树)*/struc

2015-07-19 19:01:42 387

原创 Node:KMP之next数组

#include #include #include #include #include #include using namespace std;const int maxn=1010;int pos[maxn];int n;/*KMP算法中的next数组求法图解:|**************0000000000**************.............

2015-07-19 12:39:17 314

原创 Network:测试socket发送结构体

// SendByClient.cpp : 定义控制台应用程序的入口点。// 发送方#include "stdafx.h"#include #include #pragma comment(lib,"ws2_32.lib")const int HOST_INFO_SIZE = 32;struct PACKAGE{ //定义成指针就坑了,不过暂时还不知道为什么 char m

2015-07-18 11:54:56 427

原创 Network:UDP广播消息的测试

这篇博客流程比较规范:http://blog.csdn.net/great3779/article/details/5699986我自己的代码如下,仅仅是测试// BroadCastReceiver.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #pragma comment(lib,"ws2_32.li

2015-07-17 13:09:28 911

原创 Node:最短路径之Dijkstra堆优化

#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))#define INF 0xfffffffusing namespace std;const int maxn=1010;//到节点的距离和第i个节点的前一个节点int di

2015-07-16 23:08:08 407

原创 Node:最短路径算法之Dijkstra

#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))#define INF 0xfffffffusing namespace std;const int maxn=1010;//到节点的距离和第i个节点的前一个节点int di

2015-07-16 22:43:37 365

原创 Node:区间DP-1

#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))#define INF 0xfffffffusing namespace std;const int maxn=310;int sum[maxn],dp[maxn][maxn];

2015-07-16 20:52:59 289

翻译 Network:smtp协议

#include #include #pragma comment(lib,"ws2_32.lib")void sendMessage(char *buffer,SOCKET socket){ if (SOCKET_ERROR == send(socket, buffer,strlen(buffer),0)) printf("send failed...\n");}void

2015-07-16 12:13:15 349

原创 Network:socket发送http请求

#include #include #include #include #pragma comment(lib,"ws2_32.lib")using namespace std;bool parse_url(string &url_string, string &host_string, string &resource_string){ const char *url =

2015-07-15 21:50:12 296

原创 Network:socket查询主机信息

// NetLookup.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #pragma comment(lib,"ws2_32.lib")int _tmain(int argc, _TCHAR* argv[]){ WSADATA wsaData = { 0 }; /* struct

2015-07-15 16:51:46 339

原创 Network:检验和

//返回值2个字节,16位unsigned short CheckNum(unsigned short* Buffer, int len){ //32位,4个字节 long int check = 0; while( len > 1) { check += *Buffer++; //一次加工16位 len -=

2015-07-15 13:42:27 434

原创 Node:线段树的单点更新

#include #include #include #include using namespace std;const int maxn=32010;//类似一棵二叉树,加上数据和维护的区间信息struct Node{ int l,r; int data;};//利用数组来存储二叉树Node tree[maxn*4];int ans[maxn];i

2015-07-14 17:41:37 236

原创 Node:RMQ问题之ST算法

#include #include #include using namespace std;const int maxn=1000010;const int N=1010;int data[N];int f[maxn][20];int sz;/*f[i][j]表示 i...2^j-1的最大值,即从第i个数开始连续2^j个数的最大值2^len>sz -> len*lg2>l

2015-07-14 16:45:12 331

原创 Network:socket+线程

#include #include #include using namespace std;const int maxn=10;/*服务器端*///有socket获取ipstring getIpAddressBySocket(SOCKET socket){ SOCKADDR_IN socket_addr; memset(&socket_addr,0,si

2015-07-14 16:01:13 281

原创 Node:最小堆

#include #include #include using namespace std;const int maxn=1010;int heap[maxn];int sz;//堆从下标1开始void deleteNode() //最小堆{ //,第一个节点删除,最后一个放到第一个位置,之后向下调整 heap[1] = heap[sz--

2015-07-13 21:28:19 279

原创 Node:快速排序

#include #include #include #include #include using namespace std;const int maxn=1010;int data[maxn];int sz;//快排思想:选取一个数,使得其左边所有数比他小,右边数比他大int depart(int l,int r){ //data[mid]成为标准

2015-07-13 20:50:44 397

原创 Node:普通归并

#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))using namespace std;const int maxn=1010;int arr[maxn], tmp[maxn];int n,m;//向上归并的实现voi

2015-07-13 20:23:16 283

原创 Node:链式前向星

#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))using namespace std;const int maxn=1010;int n,cur,m;struct Edge{ int next,to,cost;

2015-07-12 23:10:02 275

转载 Node:原地归并

#include #include #include #include #include #include #define flush(arr,i) memset(arr,i,sizeof(arr))using namespace std;const int maxn=1010;int arr[maxn];int n;//区间翻转void reverseArr(int

2015-07-12 23:06:50 273

原创 为向量法求组合问题

#include #include #include #include /* *位向量法解决组合问题,貌似是最易理解的方式 *建立一个向量,0表示不输出该位置上是字符 * 1表示输出字符 *所以这个问题太简单了,就是一个二叉树 *等到深度上限,根据向量数组输出对应的值 **/using namespace std;const int maxn

2015-04-13 23:15:17 313

原创 回溯法求排列(二)

考虑一个字符串排列问题,一个字符串的全排列可以怎么分步进行?方法一:依次排列,检查每一次填入的数字是否与之前的相同,这里要用到一个标记数组方法二:把每一个元素挨个放到第一个位置,求解后n-1个元素的全排列,显然这个也可以递归;但是,如果第一次交换的状态保留到下一次,是否会影响操作要考虑,因为递归的深搜一开始是一直往深度加深的地方走,走到头之后的操作叫做回溯,为了保证每一次开始的状态相同

2015-04-13 22:48:41 405

原创 回溯思想解排列问题(一)

搜索基本上算是算法的入门槛了,后续很多问题都是基于回溯思想的搜索性质解题的,当然这里暂且指的是深搜(这是一个递归函数,调试起来很不方便)。所以在忍了两个月之后要在这里总结一下深度搜索问题,毕竟要想在二十分钟之内解决好一道深搜题还是不容易的,关键的是,这种递归的思想熟练以后对于很多算法的递归表达就十分熟练敏感了。什么迭代加深,tarjan算法,树的直径等等……这里先说回溯法的理由,虽然经典的

2015-04-13 22:14:41 452

空空如也

空空如也

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

TA关注的人

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