<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jojohacker的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jojohacker</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jojohacker]]></copyright><item><title><![CDATA[2024上海华为研究所OD流程亲身经历（2）]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/137193736</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/137193736</guid><author>jojohacker</author><pubDate>Sun, 31 Mar 2024 12:44:07 +0800</pubDate><description><![CDATA[中间出了个小插曲：本来杭州的昇腾研发部门一直想要我，但是3月25日综测完了以后发现我的学校不在它们部门的目标清单上（大写的一个GG）杭研去不了，苏研BU说也不在清单上，最后辗转到上海的终端部门。100道题（估计），它需要你是像军队里士兵一样服从命令听指挥，不孤僻，能和同事打成一片，但又不过分张扬等等（负责的hr会跟你说做这个的攻略的，别犯贱就能过）3.开始问python相关各种问题，问的我cpu都干烧了，有怎么实现数据结构的、有多继承和闭包的等等，当时我脑子里一片浆糊，回答完了以后都想不起来问了啥。]]></description><category></category></item><item><title><![CDATA[2024杭州华为研究所OD流程亲身经历（1）]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/136984737</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/136984737</guid><author>jojohacker</author><pubDate>Sun, 24 Mar 2024 12:28:13 +0800</pubDate><description><![CDATA[这类问题，它会给出入队和出队顺序，先判断能否出队，再给出出队的方向（左右），这道题属于我灵光一闪，当时用一种不太常规的方法AK了（非递归，因为我动态规划、递归老是写不明白）总的来说100+90+200，大概就是这样吧。也是我出错的一道，是分段字符串排序，需要你把一个字符串分段，每段字符串都有排序规则，我提交以后只对了90%，一看错误样例比正常的少了一位，我把它放开头放最后都不对，我只好提交去做200分的题了。送分题，是给你一个排序规则，让你根据该该规则完成排序，我用python的字典排序，几行就解决了。]]></description><category></category></item><item><title><![CDATA[DDD操作系统实验（七）最终版]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/124872608</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/124872608</guid><author>jojohacker</author><pubDate>Thu, 19 May 2022 21:59:57 +0800</pubDate><description><![CDATA[银行家算法实验目的实验内容实验准备实验要求实验结果与分析实验结果结果分析附上测试文件与代码
实验目的

理解死锁产生原因，避免死锁与预防死锁的方法
能够编写代码实现银行家算法以避免死锁。

实验内容
学习课本上关于银行家算法的流程描述，明确每个步骤的含义，完成下面习题（如下英文所示）。要求：


以书上或者老师PPT的例子为例，可以input.txt文件形式，也可以手动输入的形式，依次读入进程数，资源数和实例数，分配矩阵，最大需求矩阵和可用资源向量。注意下面标黄色的英语。


输出可能的安全序列。


鼓励]]></description><category></category></item><item><title><![CDATA[DDD操作系统实验（五）]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/124192761</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/124192761</guid><author>jojohacker</author><pubDate>Fri, 15 Apr 2022 13:25:53 +0800</pubDate><description><![CDATA[CPU调度算法这个实验不做
这个实验不做

]]></description><category></category></item><item><title><![CDATA[DDD操作系统实验（四）]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/123968266</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/123968266</guid><author>jojohacker</author><pubDate>Fri, 08 Apr 2022 15:00:00 +0800</pubDate><description><![CDATA[线程实验目的实验内容2.1 线程基本操作2.2 跳高比赛实验准备
实验目的

掌握线程的创建、启动、运行等方法；
理解多线程，能够编写多线程类应用。

实验内容
2.1 线程基本操作
（1）阅读课本线程这一章Fig. 4.6关于线程创建的实例，然后完成课本上的习题4.9（见下面英文，我们要用ubuntu Pthread完成）。如果你确实无法完成4.9，请重复课本Fig. 4.6的实例（见下图，想省事直接拷贝对不对？可惜我贴心地贴了图嘿嘿嘿）。可以在代码中加入全局和局部变量，并观察结果，给出结果的同时要说明为]]></description><category></category></item><item><title><![CDATA[DDD操作系统实验（六）]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/123968383</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/123968383</guid><author>jojohacker</author><pubDate>Tue, 05 Apr 2022 13:59:36 +0800</pubDate><description><![CDATA[进程同步实验目的实验内容实验结果
实验目的

理解进程同步与进程互斥的概念。
学会使用peterson算法、PV信号量方法解决进程同步与互斥问题。

实验内容
第一步：我们假设一种最简单producer-consumer的情况：
当前系统中有两个进程在并发执行，它们分别是producer与consumer。其中，producer与consumer共享变量counter，它们分别对counter进行了修改。附件simple_producer_consumer_peterson.c给出了这样的一种情形。

A.]]></description><category></category></item><item><title><![CDATA[DDD操作系统实验（三）]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/123705871</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/123705871</guid><author>jojohacker</author><pubDate>Thu, 24 Mar 2022 11:33:16 +0800</pubDate><description><![CDATA[进程进程创建1. 在Linux下练习使用fork()创建进程2.创建子进程3.一个父进程创建多个子进程进程间通信
进程创建
1. 在Linux下练习使用fork()创建进程

如果父进程要等待子进程结束再进行；

#include &lt;stdio.h&gt;
#include &lt;unistd.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;stdlib.h&gt;
int main(){
    pid_t pid;
    pid = fork()]]></description><category></category></item><item><title><![CDATA[DDD操作系统实验系列（二）]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/123624808</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/123624808</guid><author>jojohacker</author><pubDate>Sun, 20 Mar 2022 23:49:36 +0800</pubDate><description><![CDATA[实验二 Shell编程实验内容及要求Shell版C语言版本持续更新之后实验（代码仅供参考，被DDD发现概不负责，期末挂科概不负责）
实验内容及要求
实验内容：编写一个文件工具filetools，使其具有以下功能：

退出；
创建新文件；
写文件；
读文件；
修改文件权限；
查看当前文件权限并退出。
…
提示用户输入功能号（0,1,2,3,4,5……），并根据用户输入的功能选择相应的功能。

实验要求：请仔细阅读实验准备的内容，对程序示例中确实的代码进行补充，然后使用GCC进行编译，并给出结果。
Shell版]]></description><category></category></item><item><title><![CDATA[2022/03/06 医学图像处理记录]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/123310192</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/123310192</guid><author>jojohacker</author><pubDate>Mon, 07 Mar 2022 21:03:08 +0800</pubDate><description><![CDATA[记录目标：材料：代码实现可视化
目标：

将多分类的mask中的细胞核与细胞质分别提取并将背景二值化
生成灰度直方图
根据灰度直方图拟合曲线找到峰谷值，分段计算占比核质的比例]]></description><category></category></item><item><title><![CDATA[矩阵链乘法]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/118089336</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/118089336</guid><author>jojohacker</author><pubDate>Mon, 21 Jun 2021 17:59:24 +0800</pubDate><description><![CDATA[矩阵链乘法问题解析设计分析源码
问题
矩阵链乘法，特别要求举例时采用不同于讲义的数据进行推导
解析


设计



分析

源码
矩阵链乘法算法实现源码

]]></description><category></category></item><item><title><![CDATA[算法：投资问题]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/118057010</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/118057010</guid><author>jojohacker</author><pubDate>Mon, 21 Jun 2021 14:49:28 +0800</pubDate><description><![CDATA[投资问题问题解析核心代码分析源码
问题

问题的一般性描述：
设有 m 元钱，n 项投资，函数 fi(x) 表示将 x 元投入第 i 项项目所产生的效益，i=1,2,…,n.
问：如何分配这 m 元钱，使得投资的总效益最高？
组合优化问题，假设分配给第 i 个项目的钱数是 xi，问题描述为：
目标函数：max { f1(x1) + f2(x2)+ … + fn(xn)},
约束条件：x1 + x2 + … + xn = m , xi ∈ N.
解析
设 Fk (x)表示 x 万元投给前 k 个项目的最大效益]]></description><category></category></item><item><title><![CDATA[图的m着色问题]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/117843291</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/117843291</guid><author>jojohacker</author><pubDate>Sat, 19 Jun 2021 13:41:31 +0800</pubDate><description><![CDATA[图的m着色问题问题解析核心算法复杂度分析源码
问题
图的m着色问题。给定无向连通图G和m种颜色，用这些颜色给图的顶点着色，每个顶点一种颜色。如果要求G的每条边的两个顶点着不同颜色。给出所有可能的着色方
案；如果不存在，则回答“NO”。
解析
利用回溯法解决问题。用图的邻接矩阵a表示无向连通图G = (V , E)。若(I,j)属于图的边集，则a[i][j] = 1,否则a[i][j] = 0。整数1~m表示m种不同的颜色。顶点i所着的颜色用x[i]表示。数组x[1:n]是问题的解向量。问题的解空间就是这些解]]></description><category></category></item><item><title><![CDATA[最优前缀编码（哈夫曼树及编码）]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/117415905</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/117415905</guid><author>jojohacker</author><pubDate>Wed, 02 Jun 2021 14:55:05 +0800</pubDate><description><![CDATA[最优前缀编码（哈夫曼树及编码）问题
问题
给定字符集C=/left/x1,x2,…,xn/right/C=/left/{x_1,x_2,…,x_n /right/}C=/left/x1​,x2​,…,xn​/right/和每个字符的频率f(xi)，求关于C的一个最优前缀码。

]]></description><category></category></item><item><title><![CDATA[装载问题（背包问题）]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/117414883</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/117414883</guid><author>jojohacker</author><pubDate>Tue, 01 Jun 2021 18:48:53 +0800</pubDate><description><![CDATA[装载问题（背包问题）问题描述解析算法伪代码源码
问题描述

解析
装载问题（0-1背包问题）算法解析
思路：轻者先装，直到再装任何集装箱将使轮船载重量超过B时停止。
定理：对于任何正整数n，算法（轻者先装）对n个集装箱的实例得到最优解。
证明（数学归纳法）：
（1）k=1，只有1个集装箱，其重量小于B。任何装法都只有一种方式，因此都是最优解。故轻者先装也是最优解。
（2）归纳假设：假设算法对于规模为n的输入都能得到最优解。
考虑规模为n+1的输入，
N={1,2,...,n+1},W={w1,w2,...,]]></description><category></category></item><item><title><![CDATA[LCS算法和背包算法]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/116929701</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/116929701</guid><author>jojohacker</author><pubDate>Mon, 17 May 2021 14:02:57 +0800</pubDate><description><![CDATA[LCS算法和背包算法问题描述算法思想核心算法源码
问题描述
LSC:求两串最长相同的子串
0/1背包:V体积的背包，有N个物品 ，每个物品都有自己的体积和重量，问该背包能装的最大质量。
算法思想
LCS:
X :ABCBDAB
Y :BDCABA
//求表和长度
(1):i=1
j=1 X.A!=Y.B :dp[1][1]=max(dp[1][0],dp[0][1])=max(0,0)=0 删除Y

j=2 X.A!=Y.D :dp[1][2]=max(dp[1][1],dp[0][2])=max(0,0)]]></description><category></category></item><item><title><![CDATA[选第k小元素：特定分治策略]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/116124809</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/116124809</guid><author>jojohacker</author><pubDate>Sun, 25 Apr 2021 13:55:37 +0800</pubDate><description><![CDATA[选第k小元素：特定分治策略问题描述：核心算法思路核心算法源码
问题描述：
在一个数组S中查找第k小的元素并输出

如果|S1|等于k，则m*就是所要找的第 k 小的数；
如果|S1|大于等于k，归约为在S1中找第 k1 小的子问题，k 在子问题中相对位置不变，即k=k1
如果|S1|小于等于k，归约为在S2中找 k2 位置的子问题，k2 相对于 S2 子问题和 k 相对于 S 的关系，即 k2= k-|S1|-1。（在 S 中找 k，就是在 S2中找 k2）

核心算法思路
输入：n个数的数组S，正整数k
]]></description><category></category></item><item><title><![CDATA[最近点对问题的两种思路]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/115861983</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/115861983</guid><author>jojohacker</author><pubDate>Mon, 19 Apr 2021 13:54:25 +0800</pubDate><description><![CDATA[最近点对问题问题描述算法思路穷举法分治法伪代码穷举法时间复杂度分治法时间复杂度源码
问题描述
算法思路
穷举法
已知集合S中有n个点，一共可以组成n(n-1)/2对点对，蛮力法就是对这n(n-1)/2对点对逐对进行距离计算，通过循环求得点集中的最近点对
分治法
在利用分治法思想解决此问题时，首先考虑将最近对问题进行分治，设计其分治策略。将集合S分成两个子集S1和S2，根据平衡子问题原则，每个子集中的点数大致都为n/2。这样分治后，最近点对将会出现三种情况：在S1中，在S2中或者最近点对分别在集合S1和S2中]]></description><category></category></item><item><title><![CDATA[二分归并排序]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/115303598</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/115303598</guid><author>jojohacker</author><pubDate>Mon, 29 Mar 2021 16:17:43 +0800</pubDate><description><![CDATA[二分归并排序问题问题解析核心代码源码
问题
用二分归并排序法对n个不同的数构成的数组A[1…n]进行排序，其中n=2^k。
问题解析
1.将数组对半划分；
2.分别对左半部分和和右半部分进行排序；
3.通过递归不断将分割过的数组进行划分直到不可再分；
步骤如下：

核心代码
void merge(int arr[],int left,int right) {
	int middle = (left + right) / 2;
	if (left &lt; right) {
		merge(arr, left]]></description><category></category></item><item><title><![CDATA[两种检索算法]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/115290607</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/115290607</guid><author>jojohacker</author><pubDate>Sun, 28 Mar 2021 23:51:27 +0800</pubDate><description><![CDATA[检索算法问题具体算法对分查找核心代码复杂度顺序查找核心代码复杂度源码链接
问题
在一个排好序的数组T[1…n]中查找x，如果x在T中，输出x在T的下标j；如果x不在T中，输出j=0.
具体算法
对分查找
对分查找是一种效率很高的查找方法，但被查找的数据必须是有序（例如非递减有序）的。
原理：
对分查找首先将查找键与有序数组内处于中间位置的元素进行比较，如果中间位置上的元素内的数值与查找键不同，根据数组元素的有序性，就可确定应该在数组的前半部分还是后半部分继续进行查找；在新确定的范围内，继续按上述方法进行查找]]></description><category></category></item><item><title><![CDATA[Floyd算法和Dijkstra算法规划最短路径]]></title><link>https://blog.youkuaiyun.com/jojohacker/article/details/114836306</link><guid>https://blog.youkuaiyun.com/jojohacker/article/details/114836306</guid><author>jojohacker</author><pubDate>Sun, 21 Mar 2021 22:55:26 +0800</pubDate><description><![CDATA[Floyd算法和Dijkstra算法规划最短路径Floyd算法Dijkstra算法
Floyd算法
伪代码
枚举顶点k ∈ [1,n]
	以顶点k为中介点，枚举所有顶点对i和j（i ∈ [1,n],j ∈1[1,n]）
		如果dis[i][k] + dis[k][j] &lt;dis[i][j]成立
			赋值dis[i][j] = dis[i][k] + dis[k][j]

Dijkstra算法

...]]></description><category></category></item></channel></rss>