09 2018 档案
摘要:题目 如果一个字符串包含两个相邻的重复字串,则称它是“容易的串”,其他串称为“困难的串”。输入正整数n和L,输出由前L个字符组成的、字典序第n的困难的串。例如,当L = 3时,前7个困难的串分别是A、AB、ABA、ABAC、ABACA、ABACAB、ABACABA。输入保证答案不超过80个字符。 解
阅读全文
摘要:题目 给n个点m条边(2 ≤ n ≤ 100000,1 ≤ m ≤ 200000)的无向图,每条边上都涂有一种颜色。求从结点1到结点n的一条路径,使得经过的边数尽量的少,在此前提下,经过边的颜色序列的字典序最小。一对结点间可能有多条边,一条边可能连接两个相同的结点。输入保证结点1可以到达结点n。颜色
阅读全文
摘要:题目 输入整数a和b(0 ≤ a ≤ 3000,1 ≤ b ≤ 3000),输出a / b的循环小数表示以及循环节的长度。例如a = 5,b = 43,小数表示为0.(116279069767441860465),循环节的长度为21。 解题思路 用模拟除法,并用数组模拟每次存储每次相除的结果,每除一
阅读全文
摘要:对拍 不停的随机生成测试数据,分别运行两个程序并对比其结果。这个任务被形象的称为对拍 。 流程 (1)编写好生成随机数程序(r.cpp),我的程序(a.cpp),标准程序(b.cpp),编译 (2)将生成的r.exe、a.exe、b.exe以及批处理脚本(.bat)放到同一个文件夹下 (3)运行批处
阅读全文
摘要:Makefile介绍 make是一个命令工具,它解释Makefile 中的指令(应该说是规则)。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。Makefile 有自己的书写格式、关键字、函数。像C 语言有自己的格式、关键字和函数一样。而且在Makefile 中可以使用系统she
阅读全文
摘要:SORT 使用冒泡排序对整数数组进行排序,这种排序虽然不是最快的,但却是最简单的。 C语言代码 MIPS代码 参考链接:wang22ti.com/2018/04/20/《计算机体系结构》实验2-1-MIPS指令集编程之冒泡排序/
阅读全文
摘要:实验目的 运用简单的MIPS实现一个能够整数加减乘除的计算器,同时使自己更加熟悉这些指令吧 MIPS代码 参考链接:https://blog.csdn.net/oncoding/article/details/4346531
阅读全文
摘要:第一题:用系统功能调用实现简单输入输出 题目要求 利用系统功能调用从键盘输入,转换后在屏幕上显示,具体要求如下: 1、如果输入的是字母(A~Z,区分大小写)或数字(0~9),则将其转换成对应的英文单词后在屏幕上显示,对应关系见下表 2、若输入的不是字母或数字,则在屏幕上输出字符“*” 3、每输入一个
阅读全文
摘要:嵌套过程 不调用其他过程的过程称为叶过程(leaf procedure)。如果所有过程都是叶过程,那么情况就很简单。但是某个过程可以调用其他过程,甚至调用的是自身的“克隆”。在调用非叶过程时使用寄存器需要十分小心。 例如,假设主程序将参数3存入寄存器a0,然后使用jal A调用过程A。再假设过程A通
阅读全文
摘要:有关指令 C语言代码 C语言中的循环语句有for循环、while循环、do-while循环,貌似do-while循环更接近MIPS的风格 MIPS代码
阅读全文
摘要:有关指令 关于syscall指令的使用,MARS中有详细文档,help--> syscalls MIPS代码实现 c语言代码 MIPS代码 值得一提的是,由于存放两个字符串的地址是连续的,如果字符串结尾没加终止符'\0'或者使用的是.ascii而不是.asciiz(.asciiz自带终止符,.asc
阅读全文
摘要:What ‘s the MIPS? 汇编语言 汇编语言是一类语言的总称,因处理器不同,而对应的不同机器的指令集也不同,产生了很多种汇编语言。 目前最流行的是ARM,MIPS,x86。ARM用于大量的移动手机和嵌入式系统。MIPS流行于IBM CPUs。x86用在Inter PCs。 汇编语言不像高级
阅读全文
摘要:一、题目(POJ 3984) 给出一个只有0和1组成的5x5的矩阵表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。 二、解题思路 迷宫问题中的最短路多用BFS,由于要输出最短路,一般可以在更新时保存前驱节点,这里使用DFS从
阅读全文
摘要:一、题目(CF 598D) 输入一个n x m的字符矩阵,求从某个空点出发,能碰到多少面墙壁,总共询问k次。(3 ≤m,n ≤1000,1 ≤ k ≤ min(nm,100 000)) 二、解题思路 用DFS找连通分量:从每个“.”格子出发,递归遍历与之相邻的“*”格子,且写上相同的联通分量(即代码
阅读全文
摘要:一、题目 输入一个m行n列的字符矩阵,统计字符“@”组成多少个八连块。如果两个字符所在的格子相邻(横、竖、或者对角线方向),就说它们属于同一个八连块。 二、解题思路 和前面的二叉树遍历类似,图也有DFS和BFS遍历。由于DFS更容易编写,一般用DFS找联通块:从每个“@”格子出发,递归遍历与之相邻的
阅读全文
摘要:一、操作系统 (1)视频教程 B站:https://www.bilibili.com/video/av6538245/ Youtube:https://www.youtube.com/watch?v=wll3oDwL9-c (2)文字教程和实验文档:https://github.com/chyyuu
阅读全文
摘要:1 /*支持加减乘除、取模、赋值、输入输出*/ 2 const int MAX_SIZE = 5000 + 10; //最大位数 3 4 struct BigInteger 5 { 6 int len, s[MAX_SIZE]; 7 BigInteger() 8 { 9 memset(s, 0, sizeof(s))...
阅读全文
摘要:一、加法、减法、乘法取模 二、大整数取模 求n mod m 的值,(n ≤10100,m ≤109) 思路:首先,将大整数根据秦九韶公式写成“自左向右”的形式:4351 = ((4 * 10 + 3) * 10 + 5) * 10 + 1,然后利用模的性质,逐步取模。 三、幂取模 直接暴力写是O(n
阅读全文
摘要:一、欧几里得算法 也叫辗转相除法,关键在于这个恒等式:gcd(a,b) = gcd(b,a % b),它的边界条件是gcd(a,0) = a. 这个虽然是递归,但非常高效,可以证明,gcd递归的层数不超过4.7851lgN + 1.6723,其中N = (a,b). 二、扩展欧几里得算法 过程代码,
阅读全文
摘要:一、n的欧拉phi函数值 思路:需要用试除法依次判断√n内的素数,这样需要先生成√n内的素数表,但其实不必这么麻烦:只需要每次找到一个素因数之后把它“除尽”,即可保证找到的因数都是素数(假如当前找到的因素不是素数,则存在更小的因数,与“除尽“矛盾) O(√n) 二、1~n中所有数的欧拉phi函数值
阅读全文
摘要:一、判断单链表是否存在环 这个问题有很多方法,最容易想到的就是记录每个节点记录的次数。这里也介绍的是另一种简单而常见的方法 快慢指针法: 定义两个指针slow, fast。slow指针一次走1个结点,fast指针一次走2个结点。如果链表中有环,那么慢指针一定会再某一个时刻追上快指针(slow ==
阅读全文