自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 问答 (1)
  • 收藏
  • 关注

原创 循环日程表问题

1.问题描述:有n=2^k个运动员进行网球循环赛,每个选手必须与其他n-1个选手各赛一次,1个选手1天只能比赛一次,设计日程表,有n行n-1列,第i行第j列为第i个选手第j天遇到的敌手;2.分析递归方法:日程表分相等四块,左下的值分别等于左上的值加(n/2);左上分别等于右下;左下分别等于右上3.二维指针作为实参传递,形参定义为指向一维数组的指针;#include#defin

2017-05-25 00:15:41 348

原创 逆序数对

1.思路:分治法 划分问题:分成尽量相等的两半;递归求解:统计i,j分别在左右时的逆序对个数;合并:统计i在左边,j在右边的逆序对数-->只需统计对右边的每个j,左边比他大的元素个数F(j)即可-->所有F(j)之和即为逆序对的个数-->递归排序按从小到大的顺序排列的过程中,将右边的元素复制到临时数组中时,说明左边剩余元素的个数都比A[j]大,即m-p个,用一个全局变量累加起来

2017-05-23 21:52:55 990 1

转载 归并排序

参考《算法竞赛入门经典》时间复杂度:递归方程T(n)=2T(n/2)+o(n),T(1)=1 的解为T(n)=o(nlogn)1.思想:分治思想,把序列分成尽量相等的两半;把两半元素分别排序;将两个有序表合并成一个。关键部分:合并过程用类似解答树来理解分治思想的递归过程#include#define MAX 20void merge_sort(int *A,int x,int

2017-05-23 20:36:13 207

原创 最大连续和一遍循环解决问题的写法

1.思路:best为存储的最大的连续和,sum存储从开始到一直相加的结果begin为开始位置,end为结束位置#include#define MAX 100001int main(){ int n,count=1; int A[MAX]; scanf("%d",&n); while(n--) { int i,k=1,num; int begin=1,end=1,su

2017-05-23 19:24:43 347

原创 分治法解决最大连续和

1.步骤:划分子问题-->递归求解子问题-->合并子问题的解合并的问题:先寻找最佳起点,再寻找最佳终点(从分界点分别向左,向右寻找),然后与子问题的最优解比较关键解决:输出起点和终点的位置 -1,0   begin=end=2 的情况暂时没有想到办法解决#include#define MAX 100001int begin=0,end=0;int maxsum(int *A,

2017-05-23 17:29:00 509

原创 困难的串的思考

问题描述:如果一个字符串包含两个相邻的重复子串,则称它为容易的串,其他串称为困难的串,如:BB,ABCDACABCAB,ABCDABCD都是容易的,D,DC,ABDAB,CBABCBA都是困难的。输入正整数n,L,输出由前L个字符组成的,字典序第n小的困难的串。例如,当L=3时,前7个困难的串分别为:A,AB,ABA,ABAC,ABACA,ABACAB,ABACABA思路很简单:方法1

2017-05-21 17:02:56 1539 2

原创 子集构造

1.位向量思路:集合中的元素,无非两种情况,一是选,二是不选,两条路分情况枚举递归就好2.二进制法:用二进制{0,1,2...n-1}来表示子集S,int i=[0,1  对于每个子集 从0到n-1转换为二进制与S取&,为1则输出,包括空集().#include#define MAX 10void print_subset(int n,int s){ int i; f

2017-05-21 10:37:06 470

原创 双基回文数

输入一个正整数n,至少在两个不同的进位制下,b1,b2都是回文数,(2,10)之间的进位制,回文数不包含前导0,输入正整数S思路:用count标记,在一个进位制下如果是回文数,则+1,为2时直接退出,输出结果       不包含前导0,回文数首位为0,直接退出判断回文数的循环#include#define MAX 32int main(){ int n; while(scan

2017-05-20 17:00:28 420

原创 最大乘积的实现

输入n个元素组成的序列,找出一个乘积最大的连续子序列,最大乘积不是正数(0和负数),输出-1,1分析:最大乘积为10^18,大于int整型最大值2^31,小于__int64 2^63 = 9.2*10^18;#include#include#define MAX 18int main(){int n;int temp[MAX];while(scanf("%d",

2017-05-20 00:07:26 374

原创 使用socket套接字通过http协议实现文档下载功能

遇到问题:1.重定向以后,Connect服务器时没有改变服务器主机的ip地址(重定向后的URL主机IP),导致访问重定向后的URL时,服务器返回404,访问不到页面。

2016-04-29 15:09:45 1153

原创 WinHttp方法通过HTTP协议向服务器发送请求,返回结果

URL_COMPONENTS urlComp;DWORD dwSize = 0;WCHAR* lpOutBuffer = NULL;HINTERNET hSession = NULL,hConnect = NULL , hRequest = NULL;BOOL bResults = FALSE;ZeroMemory(&urlComp,sizeof(urlComp));url

2016-04-15 19:32:49 3142

转载 析构函数声明为虚函数的情况

转自:http://www.cnblogs.com/children/archive/2012/08/13/2636956.html先看下面一段程序:#include using namespace std;class Person{public:virtual ~Person()                    //加了virtual,讲析构函数声明

2016-04-12 17:36:44 251

原创 cocos2d-x 启动一个新的场景类遇到的错误

1.#include 包含的文件不存在,  需要把新建的场景类的头文件和.cpp文件复制到项目的.classes目录,并且要在VS2012的项目属性的附加包含目录中将.classes目录添加进去。2.出现   fatal error LNK1120: 1 个无法解析的外部命令   错误和LNK2019错误,需要在.cpp文件中添加USING_NS_CC宏

2016-03-27 21:38:04 305

原创 Hanoi问题

x,y,z分别为初始塔,辅助塔,目的塔#includeint step=1;void move(int n,char from,char to){   printf("第%d步:将%d号盘子%c----->%c\n",step++,n,from,to);}void Hanoi(int n,char from,char help,char to)//理解顺序:将n个盘子由

2016-03-22 12:14:23 228

原创 括号匹配算法的栈实现

#include#include#include#includetypedef struct{char *base;char *top;int size;}Sqstack;int InitStack(Sqstack &s){s.base=(char *)malloc(10 * sizeof(char));if(!s.base)exit(-2)

2016-03-22 11:33:42 395

原创 数制转换的几种方法

原理:十进制N和其他d进制数的转换,N=(N div d) + N mod d;1.栈的实现typedef struct{  int *base;int* top;int stacksize;};void Turn(){InitStack(S);scanf("%d",N);while(N){Push(S,N%8);  //以八进制为例N=N/8;

2016-03-21 20:17:25 767

原创 一元多项式相加

不采用顺序存储结构的原因:如果多项式的指数很大,但是系数非零项很少,将会浪费很多存储空间。一元多项式相加的运算规则:对于两个多项式指数相同的项,系数相加,若不为零,则构成和多项式的一项;对于所有指数不相同的项,照抄。int cmp( int a , int b){a>b;return 1;a=b;return 0;a}void Add(poly &Pa,poly &

2016-03-21 19:57:21 472

原创 将两个线性链表归并为一个有序链表

void List(L &La,L &Lb,L &Lc){//已知单链线性表La, Lb的元素按值非递减排列,//归并La和Lb,得到新的单链表Lcpa = La->next;pb=Lb->next; //La,Lb为链表的头结点Lc=pc=La;while(pa&&pb){if(pa->datadata){pc->next=pa;pc=pa;pa=pa->next

2016-03-21 18:59:30 788

转载 由内到外的螺旋矩阵

思路:红线方程y=x,绿线方程y=-x+4,4为矩形边长。两条直线将区域分为四个部分,划分好每个区域的边界值,每个区域的坐标变化规律有四种,x++,y++,x--,y--,接下来仔细分析就能得到算法:void SpiralArray(int size,int** ar){       int a=size/2*2+1;//保证

2016-03-17 22:20:51 1315

转载 顺时针螺旋矩阵

将螺旋矩阵分为4个区域,我遇到的问题是4个区域边界值的条件混乱,赋值顺序为从1->2->3->4,改变方向时数组的下标值没有划清。源代码:#include#define N 20int main(){int n;int a[N][N]={0};while(scanf("%d",&n)!=EOF){int base=1,i,j,k;for(k=0;k{

2016-03-17 22:09:09 847

转载 使用VAssistX的好处

VAssistX是VS的好助手,熟练掌握它的快捷方式能大大提高编程效率。一些最常用的快捷方式(也就是它最主要的一些功能)Alt + O: 在对应的cpp和h文件切换,除后缀名之外文件名必须一致Shift + Alt + O: 打开一个窗口,根据输入的字符来匹配源文件名,从而快速打开一个源代码文件。Alt + M:列出当前文件的所有函数。在文件编辑窗口的上部有一个ListBox,里面

2015-12-29 21:05:37 653

转载 图的遍历非递归实现的思路

使用到的数据结构说明:邻接表的形式说明   typedef struct node{//边表结点   int adjvex; //邻接点域   struct node *next; //链域   //若要表示边上的权,则应增加一个数据域   }EdgeNode;   typedef struct vnode{ //顶点表结点   

2014-10-21 16:18:00 683

空空如也

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

TA关注的人

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