随笔分类 - C语言
摘要:题目题目描述:
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
输入:
每个测试案例包括n+1行:
第一行为2个整数n,k(1<=n<=10000),n表示结点的个数,k表示要求的路径和,结点编号从1到n。 接下来有n行。这n行中每行为3个整数vi,leftnode,rightnode,vi表示第i...
阅读全文
摘要:看LibLinear底层代码的时候,看到了几个C语言的函数,记录一下。需包含头文件:string.h1、strrchr函数名称: strrchr函数原型:char *strrchr(char *str, char c);所属库: string.h函数功能:查找一个字符c在另一个字符串str中末次出现的位置(也就是从str的右侧开始查找字符c首次出现的位置),并返回从字符串中的这个位置起,一直到字符串结束的所有字符。如果未能找到指定字符,那么函数将返回NULL。2、strtokchar *strtok(char s[], const char *delim);分解字符串为一组字符串。s为要分解的
阅读全文
摘要:前言又是一道动态规划题目,开始走了弯路,以为是简单的最长公共子序列题目,没深入分析,然后各种两边分别求最长公共子序列,然后就没有然后了题目题目描述:
N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形。
合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1, 2, …, K,他们的身高分别为T1, T2, …, TK,
则他们的身高满足T1 < T2 < … < Ti , Ti > Ti+1 > … > TK (1 <= i <= K)。
你的任务是,已知所有N位同学的身高,计算最少需要几
阅读全文
摘要:前言0-1背包问题,动态规划的经典题目,在九度oj上ac将近230道题目后感觉还是动态规划的题目最具有挑战性,因为每个题目你都需要自己描述最优解的结构,自己去递归定义最优解。这个很有难度,但是征服有难度的题目本身就是对自己的提高!问题描述我们有n种物品,物品j的重量为wj,价格为pj。我们假定所有物品的重量和价格都是非负的。背包所能承受的最大重量为W。如果限定每种物品只能选择0个或1个,则问题成为0-1背包问题。思路我们假定w1,...,wn和W都是正整数。我们将在总重量不超过Y的前提下,前j种物品的总价格所能达到的最高定义为A(j, Y).A(j, Y)的递推关系为:A(0, Y) = 0A
阅读全文
摘要:前言目前我掌握的排序算法有冒泡排序、插入排序、堆排序、快速排序,这几个排序算法的过程和思想包括时间复杂度我都能快速的讲出个1234来,唯独对归并排序理解的不够深入,这里重新学习一下归并排序分治思想将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后再合并这些子问题的解建立原问题的解,归并排序完全遵循分治模式:分解:分解待排序的n个元素的序列成各具n/2个元素的两个子序列解决:使用归并排序递归地排序两个子序列合并:合并两个已排序的子序列以产生已排序的答案归并排序算法归并排序算法的关键操作是“合并”步骤中两个已排序序列的合并。我们通过调用一个辅助过程merge(A, p,
阅读全文
摘要:前言这是九度5月份月赛的题目,一道基础的动态规划题目,当时对动态规划理解的不够深入,这之后的2个星期时间,也在有意的学习动态规划的思想,动态规划关键在于思想,然后就是对于题目的分析,这里ac了也记录一下自己的分析过程。题目题目描述:
小明每天都在开源社区上做项目,假设每天他都有很多项目可以选,其中每个项目都有一个开始时间和截止时间,假设做完每个项目后,拿到报酬都是不同的。由于小明马上就要硕士毕业了,面临着买房、买车、给女友买各种包包的鸭梨,但是他的钱包却空空如也,他需要足够的money来充实钱包。万能的网友麻烦你来帮帮小明,如何在最短时间内安排自己手中的项目才能保证赚钱最多(注意:做项目的时候
阅读全文
摘要:前言本来是九度oj是一道三星的acm题目,但是同样在《剑指offer》这本书上有所提及,正好我看的时候发现了一处错误,这里纠正一下概念二叉搜索树(binary search tree),或者是一棵空树,或者是具有下列性质的二叉树:若它的左子树不为空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不为空,则右子树上所有结点的值均大于它的根节点的值。它的左、右子树也分别为二叉排序树。注意:根据概念我们可以明确的知道,二叉搜索树的左、右子树均可为空。构建二叉搜索树或者是遍历可以参考我之前的博客:http://blog.csdn.net/zinss26914/article/details/
阅读全文
摘要:前言我做八皇后的题目是利用了字符串全排列的思想,递归+回溯,需要再理解全排列作为前提,没理解的同学可以参考这个链接:http://blog.csdn.net/zinss26914/article/details/8939140题目题目描述:
会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。 对于某个满足要求的8皇后的摆放方法,定义一个皇后串a与之对应,即a=b1b2...b8,其中bi为相应摆法中第i行皇后所处的列数。已经知道8皇后问题一共有92组解(即92个不同的皇后串).
阅读全文
摘要:科普顾名思义了,英文不差的都可以直译出来,素数环问题,这里把百度百科的词条贴出来科普一下题目题目描述:
A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ..., n into each circle separately, and the sum of numbers in two adjacent circles should be a prime.
Note: the number of first circle should always be 1. 输入:
n (1 < n
阅读全文
摘要:前言字符串的排列组合问题,困扰了我好久,递归的思想我今天一定要掌握,擦,话不多说,博客走起!问题输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba思路这是典型的递归求解问题,递归算法有四个特性:必须有可达到的终止条件,否则程序陷入死循环子问题在规模上比原问题小子问题可通过再次递归调用求解子问题的解应能组合成整个问题的解对于字符串的排列问题:如果能生成n-1个元素的全排列,就能生成n个元素的全排列。对于只有一个元素的集合,可以直接生成全排列。所以全排列的递归终止条件很明确,只有一个元素
阅读全文
摘要:历史这个问题是以弗拉维奥.约瑟夫斯命名的,它是1世纪的一名犹太历史学家。他在自己的日记中写道,他和他的40个战友被罗马军队包围在洞中。他们讨论是自杀还是被俘,最终决定自杀,并以抽签的方式决定谁杀掉谁。约瑟夫斯和另一个人是最后两个留下的人。约瑟夫斯说服那个人,他们向罗马军队投降,不再自杀。约瑟夫斯把他的存活归因于运气或天意,他不知道是哪一个约瑟夫环问题 N个人围成一圈顺序编号,从1号开始按1、2、3......顺序报数,报p者退出圈外,其余的人再从1、2、3开始报数,报p的人再退出圈外,以此类推。 请按退出顺序输出每个退出人的原序号算法思想这里介绍3种算法,两种直观,一种运用数学循环链表...
阅读全文
摘要:前言本来想看道题目直接睡觉,再看他人解答前看到说这道题是北航上机题目,当时做出来的人很少,因此我就按耐不住激动的心情,遇到这种题目,我必须自己ac啊,中间跟一个同学讲了一下git的使用,浪费了一些时间,从调试到ac花费了大约40多分钟吧,走神了一段时间,毕竟开始做题已经晚上1点了,难免精力不集中开始时间:结束时间:ac过程:题目题目描述: 读入数据string[ ],然后读入一个短字符串。要求查找string[ ]中和短字符串的所有匹配,输出行号、匹配字符串。匹配时不区分大小写,并且可以有一个用中括号表示的模式匹配。如“aa[123]bb”,就是说aa1bb、aa2bb、aa3bb都算...
阅读全文
摘要:前言昨晚刚想明白kmp算法,今天当然想找到题目练手,感觉用上kmp反而麻烦了,但是也算对学过的知识进行巩固吧题目题目描述:
给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。
输入:
输入只有1组数据。
输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。
输出:
删除输入的短字符串(不区分大小写)并去掉空格,输出。
样例输入:
in
#include int main()
{ printf(" Hi ");
}
样例输出:
#clude
tma()
{ prtf("Hi");
}
提示:
注:将字符串中的I
阅读全文
摘要:前言打球打的太晚了,衣服还在洗衣机里,随便在九度oj上ac一题,当然难度不超过3星题目题目描述:
阳仔作为OJ的数据管理员,每一周的题目录入都让其很抓狂,因为题目不是他出的,他控制不了出题的速度……在等题目的时候,阳仔又不敢出去打篮球,所以只能在纸上乱涂乱写,这天,阳仔在纸上写下了这样的序列:
1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 ……
即大小为k的数字,正好会在序列中连续重复k次。写到这里,阳仔兴奋了,但是他不知道这种序列叫什么名字,那就暂时叫它jobdu疯狂序列好了。现在阳仔想让你解决一个问题是,假如给你一个整数n,你能说出这个序列中,第n个元
阅读全文
摘要:前言用shell模拟了一个多进程的并发操作数据库的脚本,执行效果非常不理想,所以有必要把linux下的进程学习一下,参考的书籍是《linux下c一站式编程》引言每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体,其中有这些信息进程id。系统中每个进程有唯一的id,在c语言中用pid_t类型表示,其实就是一个非负整数进程的状态,有运行、挂起、停止、僵尸等状态进程切换时需要保存和恢复的一些CPU寄存器描述虚拟地址空间的信息描述控制终端的信息当前工作目录(current working directory)umask掩码文件描述
阅读全文
摘要:前言睡觉前禁止自己的胡思乱想,上九度上ac了一道并查集的题目题目题目描述: 欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?
输入: 测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是节点数N ( 1 < N < 1000 )和边数M;随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从1到N编号)。当N为0时输入结束。
输出: 每个测试用例的输出占一行,若欧拉回路存在则输出1,否则输出0。
样例输入:
3 3
1 2
1 3
2 3
3 2
1 2
2 ...
阅读全文

浙公网安备 33010602011771号