摘要:
解题思路:(此前用哈希表存储学生选课信息,最后一个测试点超时,或者内存超限) 后在网上翻看其他大能写的文章,受益颇多 注意到学生姓名的组成是3个大写字母+1个数字,故可开辟一个四维结构体数组指针,使学生姓名映射到唯一地址,也省去了用哈希函数要解决冲突的时间消耗问题 解法一、将学生的选课清单用二叉排序 阅读全文
摘要:
解题思路:采用桶排序思想,将每个课程看成一个桶,再把每个课程对应学生放入桶,其中学生名单的采用二叉排序树结构存储 #include <stdio.h> #include <malloc.h> #include <string.h> #define MaxSize 2503 #define MaxS 阅读全文
摘要:
解题思路: 1、存储:用一张哈希表存储单词以及对应所在的文件,再用一张文件表,存储每个文件的词汇量以及单词在哈希表中的位置 2、查询:先在文件表中查询对应的文件名,(取文件词汇量较少的文件名)-> 找到对应文件名中的词汇所在位置-> 根据此单词的位置到哈希表中查找单词所在文件列表->从而判断该单词是 阅读全文
摘要:
解题思路: 1、存储:用哈希存储单词,并用文件链表记录单词所在文件,以及行号链表记录单词所在文件中的行号 2、查询:取各单词文件名交集,再取各文件名再行号并集 #include <stdio.h> #include <string.h> #include <malloc.h> #include <c 阅读全文
摘要:
解题思路:(注意此题我没有特意处理大小写字符问题都能AC,应该是测试用例没有特意测试大小写) 解法一、将输入数据存成二叉排序树,再中序遍历输出即可 #include <stdio.h> #include <malloc.h> #include <string.h> typedef char Elem 阅读全文
摘要:
解题思路:并查集思想 #include <stdio.h> #define Max 30000+1 int book[Max]; int f[Max]; int n,m; int getf(int x) { if(f[x]==x) return x; else return f[x]=getf(f[ 阅读全文
摘要:
解题思路: 1、先按第一跳距离升序 2、合法第一跳加入队列中 3、(广度优先)访问队列中的结点,每访问一个结点并将其可到达的子孙加入队列中,直至访问至某个结点可以到岸结束 #include <stdio.h> #include <string.h> #include <math.h> #define 阅读全文
摘要:
解题思路:采用DFS算法判断007是否能够逃生,每次先判断是否能够上岸,如若不能上岸再选取下一跳的落脚点,注意到第一跳的半径是D+7.5,而其他跳半径为D #include <stdio.h> #include <math.h> #include <string.h> int tag=0; int 阅读全文
摘要:
解题思路: 由于哈夫曼树并不唯一,但哈夫曼树的带权路径长度 WPL是相同且是最优, 故,利用哈夫曼算法求出WPL,再计算每套编码的WPL,如果WPL相同,则判断各字符编码是否是其他字符编码的前缀 #include <stdio.h> #include <string.h> #define INF 0 阅读全文
摘要:
解题思路:采用将多叉树转化为二叉树的方法(即利用孩子兄弟的结点结构)建立二叉树,最后再先序遍历输出即可 #include <stdio.h> #include <malloc.h> #include <string.h> struct TNode { int space;//记录打印空格数 int 阅读全文