<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[SJCHEN1221的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/SJCHEN1221</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; SJCHEN1221]]></copyright><item><title><![CDATA[算法导论之最大子数组问题]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/86747578</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/86747578</guid><author>SJCHEN1221</author><pubDate>Sat, 02 Feb 2019 10:11:18 +0800</pubDate><description><![CDATA[例如我们在求解下面的最大子数组时

13
			-3
			-25
			20
			-3
			-16
			-23
			18
			20
			-7
			12
			-5
			-22
			15
			-4
			7
		 

 

最简单的做法就是暴力求解，但是时间复杂度为O(n^2);


//
//  main.cpp
//  算法导论
//
//  Created by SJCH...]]></description><category></category></item><item><title><![CDATA[算法导论之二分查找]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/86741501</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/86741501</guid><author>SJCHEN1221</author><pubDate>Fri, 01 Feb 2019 15:20:37 +0800</pubDate><description><![CDATA[二分查找的前提是要进行查找的序列必须是有序的，这里我们以升序为例。

1
			2
			3
			4
			5
			6
			7
			8
			9
		 

 

start = 0, end = 8, mid = (0 + 8) / 2;

比如我们查找val = 2;

首先我们比较A[mid]和val, 如果val大，那么我们递归右边，否则我们递归左边。


#include &amp;lt;...]]></description><category></category></item><item><title><![CDATA[算法导论之归并排序]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/86737349</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/86737349</guid><author>SJCHEN1221</author><pubDate>Fri, 01 Feb 2019 11:57:49 +0800</pubDate><description><![CDATA[归并排序的思想就是分治法；

分治法：为了解决一个给定的问题，算法一次或多次递归地调用其自身以解决紧密相关的若干子问题。

分治模式在每层递归时都有三个步骤：

一，分解原问题为若干子问题。

二，解决这些子问题，递归求解各子问题。

三，合并这些子问题的解成原问题的解。

了解了分治法之后，我们再来看下归并排序：

1，分解：分解待排序的n个元素的序列各具n/2个元素的两个子序列。

2，解决：...]]></description><category></category></item><item><title><![CDATA[算法导论之插入排序]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/86737079</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/86737079</guid><author>SJCHEN1221</author><pubDate>Fri, 01 Feb 2019 11:17:53 +0800</pubDate><description><![CDATA[比如我们对下面的进行排序，排序过程如下

5
			2
			4
			6
			1
			3
		 

 

2
			5
			4
			6
			1
			3
		 

 

2
			4
			5
			6
			1
			3
		 

 

--------------------------------------------每次进行比较2位，然后插到合适的位置

1
			2
			...]]></description><category></category></item><item><title><![CDATA[P1553 数字反转（升级版)]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/86644689</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/86644689</guid><author>SJCHEN1221</author><pubDate>Fri, 25 Jan 2019 13:45:16 +0800</pubDate><description><![CDATA[题目描述

给定一个数，请将该数各个位上数字反转得到一个新数。

这次与NOIp2011普及组第一题不同的是：这个数可以是小数，分数，百分数，整数。整数反转是将所有数位对调；小数反转是把整数部分的数反转，再将小数部分的数反转，不交换整数部分与小数部分；分数反转是把分母的数反转，再把分子的数反转，不交换分子与分母；百分数的分子一定是整数，百分数只改变数字部分。整数新数也应满足整数的常见形式，即除非给...]]></description><category></category></item><item><title><![CDATA[P1980 计数问题]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/86584876</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/86584876</guid><author>SJCHEN1221</author><pubDate>Mon, 21 Jan 2019 21:40:05 +0800</pubDate><description><![CDATA[题目描述

试计算在区间 11 到 nn的所有整数中，数字x(0≤x≤9)x(0≤x≤9)共出现了多少次？例如，在 11到1111中，即在 1,2,3,4,5,6,7,8,9,10,111,2,3,4,5,6,7,8,9,10,11 中，数字 11出现了 44 次。

输入输出格式

输入格式：

 

2个整数n,x，之间用一个空格隔开。

 

输出格式：

 

1个整数，表示x出现的次数。...]]></description><category></category></item><item><title><![CDATA[大数加法]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/85231844</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/85231844</guid><author>SJCHEN1221</author><pubDate>Mon, 24 Dec 2018 13:08:26 +0800</pubDate><description><![CDATA[对于一些比long int还大的数，我们应该如何计算加法呢？

可以想到的是可以转换为字符串去计算。

思路：

1，逆序输入

2，加法

1）主要就是考虑进位。

比如我们计算987654321 + 5678

对于高位不足的我们补0

最后结果在逆序输出就行了

1
			2
			3
			4
			5
			6
			7
			8
			9
		8
			7
			6
			5
			0...]]></description><category></category></item><item><title><![CDATA[堆(Heap)的实现]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/84671369</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/84671369</guid><author>SJCHEN1221</author><pubDate>Sat, 01 Dec 2018 11:04:21 +0800</pubDate><description><![CDATA[什么是堆？

优先队列（Opriority Queue）

特殊的“队列”，取出元素的顺序是依照元素的优先权（关键字）大小，而不是元素进入队列的先后顺序。



堆有两大特性：

1，结构性：是一颗完全二叉树。

2， 有序性：每个叶子结点到根结点都是有序的，如果是升序，那么就是最大堆，否则为最小堆。

这些是堆：



下面的不是堆：



 

下面让我们来具体的来看堆是如何建立的

比如给定...]]></description><category></category></item><item><title><![CDATA[快速排序]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/84593866</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/84593866</guid><author>SJCHEN1221</author><pubDate>Wed, 28 Nov 2018 23:08:30 +0800</pubDate><description><![CDATA[快速排序又冒泡排序改进而来，快速排序方法中的一次交换可以消除多个逆序。

（1）时间复杂度



例如

对下面的元素进行快速排序

0
			1
			2
			3
			4
			5
			6
			7
		 
			49
			38
			65
			97
			76
			13
			27
		low = 1, high = L.length = 7 ;

我们把第一个出现的数放到0这个哨...]]></description><category></category></item><item><title><![CDATA[排序]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/84564952</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/84564952</guid><author>SJCHEN1221</author><pubDate>Tue, 27 Nov 2018 14:09:31 +0800</pubDate><description><![CDATA[
#include &amp;lt;stdio.h&amp;gt;

typedef int ElementType;
int P;
int N = 6;
ElementType A[] = {34,8,64,51,32,21};

void Buddle_Sort( ElementType A[], int N )
{
	int t,i;
	int flag;
	for ( P = N -1; P &amp;gt;= ...]]></description><category></category></item><item><title><![CDATA[02-线性结构2 一元多项式的乘法与加法运算]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/84349911</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/84349911</guid><author>SJCHEN1221</author><pubDate>Thu, 22 Nov 2018 22:21:17 +0800</pubDate><description><![CDATA[02-线性结构2 一元多项式的乘法与加法运算 （20 分)

设计函数分别求两个一元多项式的乘积与和。

输入格式:

输入分2行，每行分别先给出多项式非零项的个数，再以指数递降方式输入一个多项式非零项系数和指数（绝对值均为不超过1000的整数）。数字间以空格分隔。

输出格式:

输出分2行，分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔，但结尾不能有多余空格。...]]></description><category></category></item><item><title><![CDATA[KMP算法,oj2087,Oulipo]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/84305119</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/84305119</guid><author>SJCHEN1221</author><pubDate>Tue, 20 Nov 2018 17:12:40 +0800</pubDate><description><![CDATA[对于一些简单的查找我们可以用c库函数strstr

 


#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;string.h&amp;gt;

typedef char* Position;
#define NotFound NULL

int main()
{
	char string[] = &quot;This is a simple example.&quot;;
	char patter...]]></description><category></category></item><item><title><![CDATA[C++头文件algorithm的一些用法]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/84304803</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/84304803</guid><author>SJCHEN1221</author><pubDate>Tue, 20 Nov 2018 16:28:45 +0800</pubDate><description><![CDATA[转载自https://blog.youkuaiyun.com/liuweiyuxiang/article/details/51865991

&amp;lt;algorithm&amp;gt;是c++特有的STL模板的算法头文件 包含了一些特定的算法函数 
包括sort(),stable_sort(),partical_sort(),nth_element()等常用的算法函数 一、巡防算法
for_each(容器起始地址，容...]]></description><category></category></item><item><title><![CDATA[二维数组求鞍点]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/83549928</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/83549928</guid><author>SJCHEN1221</author><pubDate>Tue, 30 Oct 2018 22:22:54 +0800</pubDate><description><![CDATA[题目内容：

给定一个n*n矩阵A。矩阵A的鞍点是一个位置（i，j），在该位置上的元素是第i行上的最大数，第j列上的最小数。一个矩阵A也可能没有鞍点。

你的任务是找出A的鞍点。

输入格式:

输入的第1行是一个正整数n, （1&amp;lt;=n&amp;lt;=100），然后有n行，每一行有n个整数，同一行上两个整数之间有一个或多个空格。

 

输出格式：

对输入的矩阵，如果找到鞍点，就输出其下标。下标...]]></description><category></category></item><item><title><![CDATA[二分查找和排序]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/83474051</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/83474051</guid><author>SJCHEN1221</author><pubDate>Sun, 28 Oct 2018 13:45:17 +0800</pubDate><description><![CDATA[二分查找，主要是针对排序问题进行查找

我们先算出数组的长度


len = sizeof(a) / sizeof(a[0])

我们先设置


int left = 0;
int right = Len - 1;
int mid = (left + right ) / 2;

如果K大于mid，那么 left = mid + 1;

小于 right = mid -1;


#include &amp;...]]></description><category></category></item><item><title><![CDATA[树的一些基本用法]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/83446444</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/83446444</guid><author>SJCHEN1221</author><pubDate>Sat, 27 Oct 2018 15:37:05 +0800</pubDate><description><![CDATA[我们用先序创建树，算出它的先序，中序和后序，然后计算他的结点和叶子结点

最后计算树的深度。

 

目录

                                                                       树的基本用法

先序
	中序
	后序
 

先序遍历就是先遍历根结点再遍历左右孩子，所以这课树的先序遍历就是

ABC##D#E#G##F###

...]]></description><category></category></item><item><title><![CDATA[最大子列和问题]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/83271887</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/83271887</guid><author>SJCHEN1221</author><pubDate>Mon, 22 Oct 2018 13:57:21 +0800</pubDate><description><![CDATA[01-复杂度1 最大子列和问题 （20 分）
给定K个整数组成的序列{ N​1​​, N​2​​, ..., N​K​​ }，“连续子列”被定义为{ N​i​​, N​i+1​​, ..., N​j​​}，其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 }，其连续子列{ 11, -4, 13 }有最大的和20...]]></description><category></category></item><item><title><![CDATA[用顺序栈实现十进制转二进制(c语言）]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/83094376</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/83094376</guid><author>SJCHEN1221</author><pubDate>Tue, 16 Oct 2018 17:17:26 +0800</pubDate><description><![CDATA[
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;

#define M 100
typedef int ElemType;
typedef struct
{
	ElemType data[M];
	int top;
}Stack;

//初始化栈
void InitStack(Stack *s)
{
	s-&amp;gt;top = -1;
}
int...]]></description><category></category></item><item><title><![CDATA[十进制转R进制链表（C语言）]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/83039399</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/83039399</guid><author>SJCHEN1221</author><pubDate>Sat, 13 Oct 2018 15:58:38 +0800</pubDate><description><![CDATA[
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
typedef int ElemType;
typedef struct Linknode
{
    ElemType data;
    struct Linknode *next;
}LiStack;

//初始化栈
void InitStack(LiStack* &amp;amp;s)
{
  ...]]></description><category></category></item><item><title><![CDATA[用顺序表实现十进制转R进制（C语言）]]></title><link>https://blog.youkuaiyun.com/SJCHEN1221/article/details/83039093</link><guid>https://blog.youkuaiyun.com/SJCHEN1221/article/details/83039093</guid><author>SJCHEN1221</author><pubDate>Sat, 13 Oct 2018 15:33:45 +0800</pubDate><description><![CDATA[
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;

#define M 100
typedef int ElemType;
typedef struct 
{
	ElemType data[M];
	int top;
}Stack;

//初始化栈
void InitStack(Stack *s)
{
	s-&amp;gt;top = -1;
}
in...]]></description><category></category></item></channel></rss>