摘要:
[USACO09NOV]Lights G 题目描述 给出一张n个点n条边的无向图,每个点的初始状态都为0。 你可以操作任意一个点,操作结束后该点以及所有与该点相邻的点的状态都会改变,由0变成1或由1变成0。 你需要求出最少的操作次数,使得在所有操作完成之后所有n个点的状态都是1。 输入格式 第一行两 阅读全文
摘要:
[USACO09NOV]Lights G 题目描述 给出一张n个点n条边的无向图,每个点的初始状态都为0。 你可以操作任意一个点,操作结束后该点以及所有与该点相邻的点的状态都会改变,由0变成1或由1变成0。 你需要求出最少的操作次数,使得在所有操作完成之后所有n个点的状态都是1。 输入格式 第一行两 阅读全文
摘要:
全排列问题 题目描述 按照字典序输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。 输入格式 一个整数n 输出格式 由1 ~ n组成的所有不重复的数字序列,每行一个序列。 每个数字保留5个场宽。 样例输入 3 样例输出 1 2 3 1 3 2 2 1 3 阅读全文
摘要:
熄灯问题 有一个由按钮组成的矩阵,其中每行有6个按钮,共5行。每个按钮的位置上有一盏灯。当按下一个按钮后,该按钮以及周围位置(上边、下边、左边、右边)的灯都会改变一次。即,如果灯原来是点亮的,就会被熄灭;如果灯原来是熄灭的,则会被点亮。在矩阵角上的按钮改变3盏灯的状态;在矩阵边上的按钮改变4盏灯的状 阅读全文
摘要:
堆可以理解成一个完全二叉树,树上的每个节点都对应着一个元素。 存储堆的数组A通常包括两个属性: A.length 给出数组元素的个数 A.heap-size 存储在数组中的堆元素的数量 也就是说,虽然[1, A.length]中可能都存有数据,但实际上只有[1, A.heap-size]中存放的是有 阅读全文
摘要:
《算法导论》中讲分治策略的第一道例题就是一道"最大子数组问题",抽象出数学模型,题意是想求出数组中的连续子数组和的最大值。 很明显,暴力求解不加任何优化是O(n^2)的时间复杂度(暴力枚举左和右的组合,然后进行求和),在大数据范围时会有超时的风险,所以我们要进行算法的优化。 使用分治策略的求解方法 阅读全文
摘要:
分治法的思想是将原问题分解为几个规模小的同类问题,递归地求解这些子问题,然后再将子问题的解合并去解决原问题。 分治法每层递归可以分为三个步骤: 1.分解:将大的问题分解成同类型的小问题 2.解决:递归解决各个子问题,直到当前子问题无法继续分割或者小于某个规模 3.合并:将分割后的子问题的解依次合并, 阅读全文
摘要:
插入排序的原理是将无序数组遍历,将下一个元素按排序规律插入到已经排好的部分中。 在书中给出的伪代码是这样的: INSERTION-SORT(A) for j = 2 to A.length key = A[i] //Insert A[j] into the sorted sequence A[1.. 阅读全文
|