<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[GodCandle的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/GodCandle</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; GodCandle]]></copyright><item><title><![CDATA[数据结构学习]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/125321781</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/125321781</guid><author>GodCandle</author><pubDate>Thu, 16 Jun 2022 20:30:10 +0800</pubDate><description><![CDATA[所有的二叉链表都基于二叉树结点的基本定义


1、最关键也是最基础的一道题：
 5、统计二叉树的宽度，即在二叉树的各层上，具有结点数最多的那一层上的结点总数
先前序遍历求出每一层的宽度，再求出最大宽度，即树的宽度每一次递归时都会碰到一个结点，每碰到一个节点就在对应位置的数组上++，因此需要一个level来计数这是第几层


6、从以t为根的二叉树中删去所有叶结点


7、计算以t为根的二叉树中指点结点*p所在层次


8、计算以t为根的二叉树中各结点中的最大元素的值


9、以前序次序输出一颗二叉树所有结点]]></description><category></category></item><item><title><![CDATA[算法学习（持续更新）]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/123534209</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/123534209</guid><author>GodCandle</author><pubDate>Wed, 16 Mar 2022 19:58:51 +0800</pubDate><description><![CDATA[一、认识复杂度和简单排序算法

1.1 时间复杂度（忽略了N前面的常数项，只保留幂项）

(1) 直接看N的幂，越小越快（当然）
但对于O(N^2)和O(N)来说，你也不能武断的就判断说后者比前者更好，因为你在表示时间复杂度的时候忽略了常数项，你只能说，当实验进程无限长的时候，后者比前者更好。

因此这个“好”的判断，是在数据样本足够大的时候给予的判断。

(2)对于相同时间复杂度O(N) 无法用理论预估的方式来判断谁好，给予超大的样本量让两个程序去跑，直接比较时间就可以了。

例：B的复杂度没有化简之前是]]></description><category></category></item><item><title><![CDATA[C++ 用结构体和类创建单向链表]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/122443332</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/122443332</guid><author>GodCandle</author><pubDate>Tue, 11 Jan 2022 22:38:47 +0800</pubDate><description><![CDATA[一、结构体


#include &lt;iostream&gt;
using namespace std;
//一个链表要实现的操作有
//建立链表，遍历链表，查找链表，插入和删除节点
//查找和遍历某种程度上来说是一样的，反正都是扎进堆里然后去找你想要的那个数

//创建链表还有两个前置条件，一个是链表头，还有一个是结点，这两个类
//节点由于存放数据和下一个节点的首地址
//而链表头用于存放第一个节点的首地址和链表的长度

//链表如果直接用struct会简单得多，因为struct的默认权限是publ]]></description><category></category></item><item><title><![CDATA[C++思路]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/122329992</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/122329992</guid><author>GodCandle</author><pubDate>Wed, 05 Jan 2022 19:11:23 +0800</pubDate><description><![CDATA[看看就行]]></description><category></category></item><item><title><![CDATA[复制数组并忽略重复数据]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/122271597</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/122271597</guid><author>GodCandle</author><pubDate>Mon, 03 Jan 2022 14:07:39 +0800</pubDate><description><![CDATA[for(i=1,y[0]=x[0],m=1;i!=k;i++)
	{
	  	for(j=0;j&lt;i;j++)
		{ 
			if(x[i]==x[j])
	  		break;
   		}		
		if(j==i)
		{
	    	y[m]=x[i];
			m++;
		}	
	}



]]></description><category></category></item><item><title><![CDATA[文件流和输入输出流]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/122276391</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/122276391</guid><author>GodCandle</author><pubDate>Sun, 02 Jan 2022 15:52:15 +0800</pubDate><description><![CDATA[对于文件流来说，写入可以没有这个文件，系统帮你自动创建，但读取必须要有。

1、编程实现一个简单的文件加密：从键盘读入一行字符，把每个字符的ASCII值加5后存放在文件“data.txt”中。


#include &lt;iostream&gt;
#include &lt;fstream&gt;
using namespace std;
int main()
{
	char zifu[30]={0};
	cin.getline(zifu,30);
	for(int i=0;zifu[i]!='\0';i+]]></description><category></category></item><item><title><![CDATA[#统计整数个数（指针）]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/122243926</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/122243926</guid><author>GodCandle</author><pubDate>Sat, 01 Jan 2022 21:59:15 +0800</pubDate><description><![CDATA[以下面这题为例：

题目内容：

输入一个字符串，其包括数字和非数字字符，如：a123x456 17935? 098tab，将其中连续的数字作为一个整数，依次存放到数组a中，统计共有多少个整数，并输出这些数。

输入格式:

数字和非数字字符的字符串

输出格式：

1)整数个数2）分别输出整数

输入样例：

a123x456 17935? 098tab583【注意需要保留带有空格的字符串，请不要使用gets，cin，练习使用cin.getline(char *str, int maxnum)】

输出样]]></description><category></category></item><item><title><![CDATA[输出大于等于n的最小的完全平方数]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/122271239</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/122271239</guid><author>GodCandle</author><pubDate>Sat, 01 Jan 2022 21:32:23 +0800</pubDate><description><![CDATA[思路很简单，也不知道为什么想不到，总之现在必须是会了。

先开平方根，强制类型转换，再乘回去，相等就输出，不相等就+1在输出，就这么粗暴。


#include &lt;iostream&gt;
using namespace std;
#include &lt;cmath&gt;
int sf(int x0)
{
	int x=sqrt(x0);
	if(x*x==x0) return x0;
	else return (x+1)*(x+1);
}
int main()
{
	int n;
	cin&gt]]></description><category></category></item><item><title><![CDATA[#函数递归]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/122270959</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/122270959</guid><author>GodCandle</author><pubDate>Sat, 01 Jan 2022 21:08:00 +0800</pubDate><description><![CDATA[对于C++初学者（我）来说，函数递归的部分只需要会写数字的阶乘就可以了。

了解函数递归的思想应该是最重要的。

姑且写了一个猴子吃桃问题。

猴子第1天摘了若干个桃子，当即吃了一半，还不解馋，又多吃了一个；第2天，吃剩下的桃子的一半，还不过瘾，又多吃了一个；以后每天都吃前一天剩下的一半多一个，到第10天想再吃时，只剩下一个桃子了。输入1~10中的任意一个数，查询该天猴子剩下多少桃子？要求用递归函数实现问题求解。

正序还是倒序第几天根本无所谓，做一个简单运算全部都看成倒过来的就可以了。

关键在思想。

]]></description><category></category></item><item><title><![CDATA[C++理论记录（持续更新）]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/122247334</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/122247334</guid><author>GodCandle</author><pubDate>Fri, 31 Dec 2021 00:02:58 +0800</pubDate><description><![CDATA[无]]></description><category></category></item><item><title><![CDATA[#字符统计]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/122243716</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/122243716</guid><author>GodCandle</author><pubDate>Thu, 30 Dec 2021 19:27:06 +0800</pubDate><description><![CDATA[以下面这道题为例：

题目内容：

输入字符串s，编程统计出s中共出现了多少个数字字符。进一步考虑，如何统计出10个数字字符各自出现的次数。

输入格式:

输入带数字字符的字符串

输出格式：

两行： 1）输出字符串中数字字符的总个数；2）一次逐行输出从数字字符‘0’到数字字符‘9’的个数，每个数字后面有一个空格。

输入样例：

abcdefk12345

输出样例：

Number's amount is:5

'0...9' amount is:0 1 1 1 1 1 0 0 0 0


#inc]]></description><category></category></item><item><title><![CDATA[C++编写过程中的一些典型错误（持续更新）]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/122243574</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/122243574</guid><author>GodCandle</author><pubDate>Thu, 30 Dec 2021 19:05:15 +0800</pubDate><description><![CDATA[1、漏情况

mooc上 给定的数字从右边取第k位

当时用数组来做，有一个样例死活不通过，看了一下 是123456 k=6 也就是取第一位的情况


void digit(long n,int k)
{
	long a=n;
	int i=0;
	int b[20]={0};
	int c=0;
	while (a)
	{
		c=a%10;
		a=a/10;
		b[i]=c;//数字记录每一位数字
		i++;//算有几位数
	}
	if(i&lt;k) cout&lt;&lt;"-1";
	/..]]></description><category></category></item><item><title><![CDATA[插入字符串]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/122230680</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/122230680</guid><author>GodCandle</author><pubDate>Thu, 30 Dec 2021 10:50:43 +0800</pubDate><description><![CDATA[期中考试不会写的痛历历在目

题目内容：

从键盘输入一个字符串，并在串中的第一次出现的最大元素后边插入字符串”ab”。

输入格式:

任意输入一个字符串

输出格式：

在串中的最大元素后边插入字符串”ab”

输入样例：

123csCUMT

输出样例：

123csabCUMT


#include &lt;iostream&gt;
using namespace std;
int main()
{
	char temp[30];
	cin.getline(temp,30);
	char *p=t]]></description><category></category></item><item><title><![CDATA[找出亲密对数]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/122230097</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/122230097</guid><author>GodCandle</author><pubDate>Thu, 30 Dec 2021 10:17:08 +0800</pubDate><description><![CDATA[题目内容：

求数n之内的亲密对数。所谓“亲密对数”，即A的所有因子（包含1但不包含其本身）之和等于B，而B的所有因子之和等于A。

输入格式:

某个数字n

输出格式：

此数字n之内的亲密对数。

输入样例：

400

输出样例：

220 284



两个注意点 i要从1开始取而不是从0，要不然除数是0很尴尬

第二个是为了防止220 284 284 220这样的重复输出

规定了一下两个数输出时的大小关系


#include &lt;iostream&gt;
using namespace ]]></description><category></category></item><item><title><![CDATA[C艹的强制类型转换]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/122229475</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/122229475</guid><author>GodCandle</author><pubDate>Thu, 30 Dec 2021 09:41:57 +0800</pubDate><description><![CDATA[double x=3/4;
double y=3.0/4.0;  //y=3.0/4或3/4.0 都行
double a=3,b=4;
double z=a/b;

double q=(double)3/4;  //或者double q=double(3/4);
double p=1.0*3/4;   //最常用的是这种

cout&lt;&lt;x&lt;&lt;" "&lt;&lt;y&lt;&lt;" "&lt;&lt;z&lt;&lt;" "&lt;&lt;q&lt;&lt;" "&lt;&lt;.]]></description><category></category></item><item><title><![CDATA[计算字符串中数字、字母、以及其他的数量]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/122229304</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/122229304</guid><author>GodCandle</author><pubDate>Thu, 30 Dec 2021 09:34:22 +0800</pubDate><description><![CDATA[#include &lt;iostream&gt;
using namespace std;
int main()
{
	char mix[30]={0};
	int numA=0,num1=0,numelse=0;
	cin.getline(mix,30);//因为cin会忽略掉所有前导白色空格，所以使用 cin&gt;&gt; 就不可能仅输入一个空格或回车符。
	//详见http://c.biancheng.net/view/1350.html
	for(int i=0;mix[i]!='\0';i+.]]></description><category></category></item><item><title><![CDATA[冒泡排序以及选择排序]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/122227142</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/122227142</guid><author>GodCandle</author><pubDate>Thu, 30 Dec 2021 00:26:43 +0800</pubDate><description><![CDATA[冒泡排序：


#include &lt;iostream&gt;
using namespace std;
//姑且认为有10个数要排序好了
void maopao (int a[])//由大到小排序
{
	int i,j;
	int temp;
	for(i=0;i&lt;9;i++)//十个数 前九个数需要比较
	{
		for(j=0;j&lt;9-i;j++)//对于每一个比数循环，随着数字增加，要比的次数越来越少
		//当j等于8时，即数列中的第九个数，只需要比一次
		{
			if(a[j]]></description><category></category></item><item><title><![CDATA[闰年判断以及计算当前天是第几天]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/122226364</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/122226364</guid><author>GodCandle</author><pubDate>Wed, 29 Dec 2021 22:45:05 +0800</pubDate><description><![CDATA[没啥好讲的自己看吧


#include &lt;iostream&gt;
using namespace std;
int main()
{
	int year;
	int month;
	int day;
	int i=0,j=0;
	int total=0;
	cin&gt;&gt;year&gt;&gt;month&gt;&gt;day;
	if((year%4==0&amp;&amp;year%100!=0)||year%400==0)
	{
		cout&lt;&lt;year&lt;&lt;"]]></description><category></category></item><item><title><![CDATA[#数字倒序]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/122224685</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/122224685</guid><author>GodCandle</author><pubDate>Wed, 29 Dec 2021 22:19:13 +0800</pubDate><description><![CDATA[先提供一种不完全正确的做法：



#include &lt;iostream&gt;
using namespace std;
int reverse(int n)
{
int a=n;
int b=0;
int x=0;

while (a)
{
	x=a%10;
	b=b*10+x;
	a/=10;
}
cout&lt;&lt;endl;
cout&lt;&lt;b;
}

int main()
{
    int m;
    cin&gt;&gt;m;
  reverse(m);
  retur.]]></description><category></category></item><item><title><![CDATA[#进制转换]]></title><link>https://blog.youkuaiyun.com/GodCandle/article/details/122225278</link><guid>https://blog.youkuaiyun.com/GodCandle/article/details/122225278</guid><author>GodCandle</author><pubDate>Wed, 29 Dec 2021 22:08:45 +0800</pubDate><description><![CDATA[进制转换和数字倒序有点像，又不是那么回事，在循环中进制转换的最后一个余数是第一位

而数字倒序的最后一个余数就是最后一位。

也正因如此进制转换不会出现数字倒序中的问题

在数字倒序中 如1200，每一次的余数都是直接加在上一个数乘10的结果中，0乘10不会有任何效果。


cin&gt;&gt;n;
int num=0;
while(n)
{
    temp=n%10;
    n/=10;
    num=num*10+temp;
}
//比如1564  
//过程就是  4 46 465 4651
]]></description><category></category></item></channel></rss>