<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[onlynb的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/onlynb</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; onlynb]]></copyright><item><title><![CDATA[编译原理First集 Follow集 Select集]]></title><link>https://blog.csdn.net/onlynb/article/details/127180653</link><guid>https://blog.csdn.net/onlynb/article/details/127180653</guid><author>onlynb</author><pubDate>Thu, 06 Oct 2022 12:22:24 +0800</pubDate><description><![CDATA[求解First集、follow集、select集]]></description><category></category></item><item><title><![CDATA[朴素贝叶斯分类]]></title><link>https://blog.csdn.net/onlynb/article/details/124014846</link><guid>https://blog.csdn.net/onlynb/article/details/124014846</guid><author>onlynb</author><pubDate>Thu, 07 Apr 2022 22:25:24 +0800</pubDate><description><![CDATA[机器学习的经典算法：朴素贝叶斯（naive byes）分类
贝叶斯分类是一类分类算法的总称，这类算法均以贝叶斯定理为基础，故统称为贝叶斯分类。而朴素贝叶斯分类是贝叶斯分类中最简单，也是常见的一种分类方法。
一：贝叶斯原理
朴素贝叶斯分类算法是一个典型的统计学习方法，主要的理论基础就是贝叶斯公式。贝叶斯公式定义如下所示：

先验概率：通过经验来判断事情发生的概率。
后验概率：后验概率就是发生结果之后，推测原因的概率。
条件概率：事件 A 在另外一个事件 B 已经发生条件下的发生概率，表示为
P(A|B)，读作]]></description><category></category></item><item><title><![CDATA[字符串模式匹配]]></title><link>https://blog.csdn.net/onlynb/article/details/120617815</link><guid>https://blog.csdn.net/onlynb/article/details/120617815</guid><author>onlynb</author><pubDate>Sun, 24 Oct 2021 22:18:17 +0800</pubDate><description><![CDATA[字符串模式匹配
1.BF算法
初始时让目标T的第 0 位与模式P的第 0 位对齐；
顺序比对目标T与模式P中的对应字符：
若 P 与 T 比对发现对应位不匹配，则本趟失配。将 P 右移一位与 T 对齐，进行下一趟比对；
若 P 与 T 对应位都相等，则匹配成功，返回 T当前比较指针停留位置减去 P 的长度，即目标T 中匹配成功的位置，算法结束。
若 P 与 T 比对过程中，T 后面所剩字符个数少于 P 的长度，则模式匹配失败。

时间复杂度为O(m*n）
int Find(Hstring &amp;T,Hs]]></description><category></category></item><item><title><![CDATA[有效的数独]]></title><link>https://blog.csdn.net/onlynb/article/details/120623281</link><guid>https://blog.csdn.net/onlynb/article/details/120623281</guid><author>onlynb</author><pubDate>Wed, 06 Oct 2021 12:16:41 +0800</pubDate><description><![CDATA[有效数独
题目：请你判断一个 9x9 的数独是否有效。只需要 根据以下规则 ，验证已经填入的数字是否有效即可。
数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
数独部分空格内已填入了数字，空白格用 ‘.’ 表示。
注意：
一个有效的数独（部分已被填充）不一定是可解的。
只需要根据以上规则，验证已经填入的数字是否有效即可
示例 1：

输入：board =
[[“5”,“3”,".",".",“7”,".",".",]]></description><category></category></item><item><title><![CDATA[八皇后问题的递归与非递归算法]]></title><link>https://blog.csdn.net/onlynb/article/details/120556502</link><guid>https://blog.csdn.net/onlynb/article/details/120556502</guid><author>onlynb</author><pubDate>Wed, 29 Sep 2021 21:48:39 +0800</pubDate><description><![CDATA[八皇后问题的递归与非递归算法
问题：设在初始状
态下在国际象棋棋盘上没有任何棋子(皇后)。然后顺序在第1行，第2行，…。第8行上布放棋子。在每一行中有8个可选择位置，但在任一时刻，棋盘的合法布局都必须满足3个限制条件，即任何两个棋子不得放在棋盘上的同一行、或者同一列、或者同一斜线上。
1.非递归算法：
q[n]:q[i]代表第i行的皇后在第i列
在每行插入皇后时，检查是否存在攻击。
1.检查不同列：q[i]!=q[j]
2.检查不在同一斜线上：abs(q[i]-q[j])!=abs(i-j)
abs代表正斜]]></description><category></category></item><item><title><![CDATA[中缀表达式求值]]></title><link>https://blog.csdn.net/onlynb/article/details/120539441</link><guid>https://blog.csdn.net/onlynb/article/details/120539441</guid><author>onlynb</author><pubDate>Tue, 28 Sep 2021 23:13:03 +0800</pubDate><description><![CDATA[中缀表达式求值
合理运用栈，按照运算优先级，编程实现任意中缀算术表达式（可以只包含’+’、’-‘、’*’、’/’等双目运算符、小括号和结束符）的求值运算。
通过操作符栈和操作数栈实现求值。
遇见数字，直接压入操作数栈，遇见操作符时：
1.当栈外优先级高于栈内优先级时：将操作符压入栈
2.当栈外优先级低于栈内优先级时：输出栈顶的操作符，从操作数栈中取出栈顶的两个数进行计算后的结果压入栈
3.当栈外优先级等于栈内优先级时，如果操作符栈栈顶=’(’，退栈不输出
相同等级运算符栈内高于栈内
int isp(char]]></description><category></category></item><item><title><![CDATA[只出现一次的数字]]></title><link>https://blog.csdn.net/onlynb/article/details/120517604</link><guid>https://blog.csdn.net/onlynb/article/details/120517604</guid><author>onlynb</author><pubDate>Mon, 27 Sep 2021 21:26:20 +0800</pubDate><description><![CDATA[只出现一次的数字
题目：给定一个非空整数数组，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素。
示例 1:

输入: [2,2,1]
输出: 1

示例2：

输入: [4,1,2,1,2]
输出: 4

解法一：
1.将数组排序
2.循环数组找出只出现一次的数字
这种算法时间复杂度不为线性。
这种解法代码就不展示了。
解法二：
这是我们今天主要讲的解法。
通过位运算中的异或运算来解决。
异或：两个位相同时为0，相异时为1。
a^a=0;
0^a=a;
异或运算满足交换律，所]]></description><category></category></item><item><title><![CDATA[循环双链表的查找、插入与删除]]></title><link>https://blog.csdn.net/onlynb/article/details/120388297</link><guid>https://blog.csdn.net/onlynb/article/details/120388297</guid><author>onlynb</author><pubDate>Mon, 20 Sep 2021 10:52:31 +0800</pubDate><description><![CDATA[查找(有头结点）
按值查找
1.前趋方向
dblnode *p=first-&gt;rlink;
while(p!=NULL&amp;&amp;p-&gt;data!=x)
{
	p=p-&gt;rlink;
}
return p;

2.后继方向
dblnode *p=first-&gt;rlink;
while(p!=NULL&amp;&amp;p-&gt;data!=x)
{
	p=p-&gt;llink;
}
return p;

定位查找
查找第i个结点在链表中的位置
dbllist *locat]]></description><category></category></item><item><title><![CDATA[求解约瑟夫问题]]></title><link>https://blog.csdn.net/onlynb/article/details/120388119</link><guid>https://blog.csdn.net/onlynb/article/details/120388119</guid><author>onlynb</author><pubDate>Mon, 20 Sep 2021 09:55:52 +0800</pubDate><description><![CDATA[问题：
编号为1、2、3、…、N的N个人按顺时针方向围坐一圈，每人持有一个密码（正整数）。从指定编号为1的人开始，按顺时针方向自1开始顺序报数，报到指定数M时停止报数，报M的人出列，并将他的密码作为新的M值，从他在顺时针方向的下一个人开始，重新从1报数，依此类推，直至圆圈中只剩下一个人为止。
解法：
此时可以用不带头结点的循环单链表，可以不移动元素，仅修改连接指针即可。

算法表示如下：
#include "CircList.h"
void Josephus(CircList&amp;L,int n,int]]></description><category></category></item><item><title><![CDATA[单链表的查找、插入与删除]]></title><link>https://blog.csdn.net/onlynb/article/details/120363425</link><guid>https://blog.csdn.net/onlynb/article/details/120363425</guid><author>onlynb</author><pubDate>Mon, 20 Sep 2021 09:38:33 +0800</pubDate><description><![CDATA[单链表（不带头结点）
插入
1.在第一个结点前插入
newnode-&gt;link=first；
first=newnode；


2.在链表中间插入
newnode-&gt;link=p-&gt;link;
p-&gt;link=newnode;


3.在链表末尾插入
newnode-&gt;link=p-&gt;link;
p-&gt;link=newnode;


插入元素代码如下：
bool insert(linklist&amp;first,datatype x,int i)
{
	linkn]]></description><category></category></item><item><title><![CDATA[顺序表的查找、插入、删除]]></title><link>https://blog.csdn.net/onlynb/article/details/120362361</link><guid>https://blog.csdn.net/onlynb/article/details/120362361</guid><author>onlynb</author><pubDate>Sat, 18 Sep 2021 10:50:44 +0800</pubDate><description><![CDATA[查找、插入与删除
按值查找：在顺序表中从头查找结点值等于给定值x的结点
int Find（seqlist&amp;L，datatype x）
{
	for（i=0;i&lt;L.n;i++)
	{
		if(L.data[i]==x)
			return i;
	}
	return -1;
}

查找算法性能分析
查找概率相等：p=1/n；
ACN=（1+2+3+…+n）/n=(1+n)/2;
查找不成功：数据比较n次。
插入新元素
bool insert(seqlist&amp;L,datatype x,]]></description><category></category></item><item><title><![CDATA[线性表（数据结构）]]></title><link>https://blog.csdn.net/onlynb/article/details/120316632</link><guid>https://blog.csdn.net/onlynb/article/details/120316632</guid><author>onlynb</author><pubDate>Sat, 18 Sep 2021 10:17:31 +0800</pubDate><description><![CDATA[线性表
1.线性表
定义：n（&gt;=0）个数据元素的有限序列，记为L=（a1，a2,…,an)。（ai是数据元素，n是表长度，a1是首元素，an是尾元素）
特点：
1.除第一个元素外，其他每一个元素都有且仅有一个直接前趋。
2.除最后一个元素外，其他每一个元素都有且仅有一个直接后继。
要点：
表中元素具有逻辑上的顺序性，在序列中各元素排列有其先后次序，有唯一的首元素和尾元素；
表中元素个数有限；
表中元素都是数据元素，即每一表元素都是原子数据，不允许表中套表。
表中元素的数据类型都相同。这意味着每一表中]]></description><category></category></item><item><title><![CDATA[数据结构基本概念]]></title><link>https://blog.csdn.net/onlynb/article/details/120239747</link><guid>https://blog.csdn.net/onlynb/article/details/120239747</guid><author>onlynb</author><pubDate>Thu, 16 Sep 2021 19:37:03 +0800</pubDate><description><![CDATA[@[TOC]数据结构第一章（绪论）
概念与术语
1.数据：所有能被输入到计算机中并被计算机程序加工、处理的所有符号的总称。（整数，字符，声音，图像，图形等）
2.数据元素：数据的基本单位。（元素，节点，记录，顶点）在计算机程序中通常作为一个整体考虑。
3.数据项：一个数据元素可以由若干个数据项组成，数据项是数据不可分割的最小单位。
4.数据对象：由性质相同（类型相同）的数据元素组成的集合，数据对象是数据的一个子集。
数据&gt;数据对象&gt;数据元素&gt;数据项

数据：图中的所有数据。
数据项：表中的]]></description><category></category></item><item><title><![CDATA[删除有序数组中的重复项]]></title><link>https://blog.csdn.net/onlynb/article/details/120299453</link><guid>https://blog.csdn.net/onlynb/article/details/120299453</guid><author>onlynb</author><pubDate>Wed, 15 Sep 2021 00:05:54 +0800</pubDate><description><![CDATA[删除数组中的重复项（C语言）
1.遍历这个数组的每一个值，再循环这个值之后的每一个值，看是否有重复；
#include &lt;stdio.h&gt; 
int removeDuplicates(int nums[], int numsSize)
{
	int i,j,k=0;
	for(i=0;i&lt;numsSize;i++)
	{
		int flag=1;
		for(j=i+1;j&lt;numsSize;j++)
		{
			if(nums[i]==nums[j])
			{
				fla]]></description><category></category></item><item><title><![CDATA[冒泡排序及优化]]></title><link>https://blog.csdn.net/onlynb/article/details/120246075</link><guid>https://blog.csdn.net/onlynb/article/details/120246075</guid><author>onlynb</author><pubDate>Sun, 12 Sep 2021 02:30:06 +0800</pubDate><description><![CDATA[冒泡排序
原理：比较相邻的元素，如果第一个比第二个大，就交换它们两个。如同它的名字一样，就是把小的浮到上面去。
代码如下图所示：
#include &lt;stdio.h&gt;
void bubble(int a[],int n)
{
	int i,j,temp;
	for(i=1;i&lt;n;i++)
	{
		for(j=0;j&lt;n-i;j++)
		{
			if(a[j]&gt;a[j+1])
			{
				temp=a[j];
				a[j]=a[j+1];
				a[j+1]=]]></description><category></category></item></channel></rss>