算法
文章平均质量分 69
窗边的倒影
一日三省
展开
-
LeetCode:N-Queens II
/**Follow up for N-Queens problem.Now, instead outputting board configurations, return the total number of distinct solutions.题目大意:N皇后问题,输入N,输出解的个数经典题目了,皇后们横、竖、斜都不可以碰到**/public class Solution原创 2013-10-18 11:29:55 · 730 阅读 · 0 评论 -
基础算法 二分查找
用Groovy写的,复习二分查找array = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]length = array.size()def checkIndex(def num, int index){ println "Index of number " + num + " is " + index;}def search =原创 2013-09-19 12:02:40 · 982 阅读 · 0 评论 -
质数判断
【问题】给定一个正整数n,如何判断其是否质数呢?1、方法一:最基本的,将其除以[2, squt(n)],只要有一个数可以整除就不是质数;2、方法二:根据素数唯一分解定理:任何一大于1的整数均可以分解为素数的乘积,若不考虑素数乘积的先后顺序,则分解式是唯一的。 由此可知,我们并不需要测试第一种方法里的所有数字,而只需要提取其中的质数,如果要是用这个方法就需要先生成[2, squt(原创 2013-01-10 22:03:14 · 1310 阅读 · 0 评论 -
Sicily 1029. Rabbit
/*【题目大意】一对兔子每个月可以产两只小兔子,小兔子过了m个月可以长大,兔子不会死,求d个月之后兔子的总数 【解题思路】 不可生育的兔子用数组存储,高精度加法*//*Run Time: 0.06secsRun Memory: 312KB*/#include #include using namespace std;int m; //兔子长大需要的时间 1-10i原创 2013-01-05 22:21:24 · 574 阅读 · 0 评论 -
Sicily 1381. a*b
/*【题目大意】高精度乘法 【解题思路】直接把1129制造出来的大数加法用过来:1、多位数乘一位数,可以直接使用加法完成。2、多位数乘形如d*10n的数,可以转换成多位数乘一位数来处理。3、多位数乘多位数,可以转换为若干个“多位数乘形如d*10n的数与多位数乘一位数”之和。因此,多位数乘多位数最终可以全部用加法来实现,专门另外写乘法什么的···何必如此想不开呢··· *//*原创 2013-01-06 11:52:40 · 618 阅读 · 0 评论 -
Sicily 1028 Hanoi Tower Sequence
/*【题目大意】汉诺塔,将其移动的每一步的盘号列出作为序列,求第p步需要移动的盘的盘号序列如下:1, 2, 1, 3, 1, 2, 1, 4, 1, 2, 1, 3, 1, 2, 1.... 【解决方案】输入的p将达到10^100,使用string接收 注意每个case之间要多一个空行 1、移动盘子的规律:把前n-1个盘子移到二号柱子,移动n号盘,然后再移动前n-1个盘到三好柱子即可原创 2013-01-05 21:18:11 · 1706 阅读 · 1 评论 -
Sicily 1438 Shopaholic
/*【题目大意】购物狂买东西,买三个给两个钱,每次付款商店都会以最便宜的作为送的你要做的就是帮她尽量省钱【解题思路】简单题,从大到小排个序,隔两个取一个就好了 *//*Run Time: 0.12secsRun Memory原创 2013-01-05 21:17:02 · 861 阅读 · 0 评论 -
Sicily 1134 积木分发
/*把所有孩子按照需要积木的量从小到大排序,依次加上歌星手里的积木即可还以为用long会不够精度,结果居然过了 *//*Passed all 4 test casesRun Time: 0.31secsRun Memory: 444KB*/#include #include //sort等 #include using namespace std;type原创 2013-01-05 17:27:47 · 659 阅读 · 0 评论 -
Sicily 1152 简单的马周游问题[Speical judge]
/*马周游,深度为29的深搜直接进行深搜的话半天都出不了结果,需要对可到达的所有点进行优先级排序排序标准是这个点的可到达数,可到达数越少的点要优先到达 *//*Run Time: 0secsRun Memory: 312KB*/#include #include //sort等 #include //memset初始化 #include using原创 2013-01-05 17:21:17 · 750 阅读 · 0 评论 -
基础算法 排序
用Groovy写的,用来复习复习基本的排序算法array = [5,8,1,3,6,2,7,4,9,0,11,15,13,12,14,10]biggerResult = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]smallerResult = [15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0]length = arr原创 2013-09-19 11:54:38 · 740 阅读 · 0 评论 -
做算法题时候的一些基础概念
时间复杂度:1、概念:a、时间复杂度:某个算法的时间耗费,他是该算法所求解时间规模n的函数;b、渐进时间复杂度:当问题规模趋向无穷大时,该算法时间复杂度的数量级;一般评价算法的时间性能,用的就是渐进时间复杂度,就简称为时间复杂度,记作T(n),T(n) = O( f(n) )。2、大O表示法 如果要全面分析一个算法,需要考虑算法在最坏情况、最好情况和平均情况下的时间代原创 2013-10-17 09:29:30 · 888 阅读 · 0 评论 -
LeetCode:Merge Two Sorted Lists
/** * Merge two sorted linked lists and return it as a new list. * The new list should be made by splicing together the nodes of the first two lists. * * Definition for singly-linked list. * pu原创 2013-10-17 20:16:42 · 692 阅读 · 0 评论 -
LeetCode:Integer to Roman
/**Given an integer, convert it to a roman numeral.Input is guaranteed to be within the range from 1 to 3999.题目大意:把一个整数变成罗马数字,输入数字是1-3999先恶补一下罗马数字相关知识: 最常见的罗马数字就是钟表的表盘符号: I, II, III,原创 2013-10-17 19:26:25 · 634 阅读 · 0 评论 -
LeetCode:Two Sum
/**Given an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two numbers such that they add up to the target, w原创 2013-10-17 10:16:03 · 639 阅读 · 0 评论 -
LeetCode:Divide Two Integers
/**Divide two integers without using multiplication, division and mod operator.题目大意:算两个整数相除的结果,不能用乘号、除号、求余号注意:提供的两个数只限制是整数,可以是正、负、零**/public class Solution { public int divide(int dividend,原创 2013-10-17 21:49:47 · 671 阅读 · 0 评论 -
LeetCode:Remove Element
/**Given an array and a value, remove all instances of that value in place and return the new length.The order of elements can be changed. It doesn't matter what you leave beyond the new length.题目原创 2013-10-17 19:55:39 · 962 阅读 · 0 评论 -
LeetCode:Container With Most Water
/**Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find原创 2013-10-17 18:29:40 · 701 阅读 · 0 评论 -
LeetCode:N-Queens
/**The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.Given an integer n, return all distinct solutions to the n-queens puzzle.E原创 2013-10-18 11:31:52 · 1022 阅读 · 0 评论 -
Sicily 1093 Air Express
/*按照题意操作即可,把重量一直增加到 w3+1 为止 *//*Run Time: 0secsRun Memory: 312KB*/#include #include using namespace std;int rate[5]; //{0, r1, r2, r3, r4}int weight[4]; //{0, w1, w2, w3}vector pack原创 2013-01-05 17:26:49 · 853 阅读 · 0 评论 -
Sicily 1153 马的周游问题[Speical judge]
/*只是比1152棋盘更大了,为了可扩展性,将棋盘大小定义为常量 *//*Run Time: 0secsRun Memory: 312KB*/#include #include //sort等 #include //memset初始化 #include #define XXX 8 //棋盘行数 #define YYY 8 //棋盘列数原创 2013-01-05 17:22:46 · 597 阅读 · 0 评论 -
Sicily 1050. Numbers & Letters
版本1:/*回溯思路是这样的,5个数,先任意找2个数进行加减乘除,把这2个数运算后的结果当做一个数,按相同的方法搜下去 把4个数任取2个然后合并成3个,再继续搜下去 注意!!无论是除法还是求余,都要先检查是否为0 注意!!此题的 + - * / 一共有五个选择,减法有两种,必须加上注意!!被注释掉的那一部分results记录方法是不能用的,不知道为什么会产生runtime err原创 2013-01-03 19:48:51 · 619 阅读 · 0 评论 -
Sicily 1156. Binary tree
/*简单的二叉树前序遍历,将节点封装好按照id存入数组即可遍历之前需要找到根节点,可以像这样子做个父节点数组,也可以在输入时就推算根节点 *//*Run Time: 0secsRun Memory: 332KB*/#include #include //memset初始化 using namespace std;typedef struct Point{原创 2013-01-03 19:50:06 · 577 阅读 · 0 评论 -
Sicily 1443. Printer Queue
/*直接按照题意一步步操作即可 *//*Run Time: 0secsRun Memory: 312KB*/#include #include //memset初始化 #include using namespace std;typedef struct Job{ int key; int flag;}; int n, m;queue原创 2013-01-03 19:49:28 · 677 阅读 · 0 评论 -
Sicily 1009. Mersenne Composite N
/*梅森素数,将乘数递归调用求乘子函数,最终可以得到其所有质数乘数再将其排序输出即可 *//*Run Time: 0.03secsRun Memory: 312KB*/#include #include #include #include using namespace std;long long list[] = {2, 3, 5, 7, 11, 13, 17,原创 2013-01-03 19:46:28 · 1605 阅读 · 0 评论 -
Sicily 1006. Team Rankings
/*给定n个五元序列,找出离这五个序列的距离和最小的序列 注意:自定义的结构体在进行排序时,记得写cmp函数 注意:使用next_permutation()方法获取全排列,逐个逐个与输入的序列组合进行距离计算在单个距离计算时,分别将其ABCDE映射到两个map,比较任两个位置,如果大小关系不一致则说明距离+1 *//*Run Time: 0.02secsRun Memory: 3原创 2013-01-03 19:45:53 · 767 阅读 · 0 评论 -
Sicily 1515. 魔版C[Speical judge]
/*只不过是对1151的初始状态和ABC变换进行修改罢了 *//*Run Time: 0.12secsRun Memory: 964KB*/#include #include #include //memset初始化 #include #include using namespace std;typedef struct Node{ int nod原创 2013-01-03 19:42:44 · 577 阅读 · 0 评论 -
Sicily 1024. Magic Island
/*树的遍历,寻找最深的节点 注意在初始化的时候得清理所有的空间 *//*Run Time: 0.35secsRun Memory: 1296KB*/#include #include using namespace std;typedef struct Bridge{ int dest; //该桥目的地 int id; //该桥id,原创 2013-01-03 19:52:21 · 725 阅读 · 0 评论 -
Sicily 1063. Who's the Boss
/*全部雇员都计算一遍之后在进行query,应该有更快的方法吧 *//*Run Time: 0.7secsRun Memory: 20812KB*/#include #include #include using namespace std;typedef struct Emp{ int id; //员工id,六位,唯一 int原创 2013-01-03 19:50:48 · 1000 阅读 · 0 评论 -
Sicily 1151. 魔板[Speical judge]
/*相对于1150,这一题需要在细节上节省更多时间,包括以下几点:1、string的处理效率太低,此处使用int数组存储数据, 也可以直接使用int,但在进行ABC转换时就需要进行乘除法, 会浪费很多时间,相对来说对数组的操作更快 而且重点在于,使用数组时对ABC操作的修改更为方便 2、使用康拓展开进行哈希操作,构建哈希表进行快速查询 *//*Run Time: 0原创 2013-01-03 19:41:59 · 583 阅读 · 0 评论 -
Sicily 1150. 简单魔板[Speical judge]
/*使用队列即可处理注意!char[]转换string时需要增加一位'\0',否则将导致赋值出错,该'\0'不会被计入string的length中 注意!这里的步数是以树的层次来决定的,不是操作的步数 *//*Run Time: 0secsRun Memory: 312KB*/#include #include #include #include using name原创 2013-01-03 19:40:45 · 917 阅读 · 0 评论 -
Sicily 1035. DNA matching
/*DNA配对,简单的搜索删除而已,一边插入一边就在判断(正反序均判断) *//*Run Time: 0secsRun Memory: 312KB*/#include #include #include using namespace std;int N; //1-100string lists[101];set pool;int num;//获取一个原创 2013-01-03 19:36:22 · 842 阅读 · 0 评论 -
Sicily 1036. Crypto Columns
/*注意!把一维数组当成二维数组使用时,要严格注意num = x*colNum + y 注意!所谓的密码转换关系别搞反了 *//*Run Time: 0secsRun Memory: 312KB*/#include #include #include #include using namespace std;string key;string text;int原创 2013-01-03 19:44:37 · 776 阅读 · 0 评论 -
Sicily 1007. To and Fro
/*简单的数组下标操作做的时候最好在草稿纸上列举实例走流程以免思维错误 *//*Run Time: 0secsRun Memory: 312KB*/#include #include using namespace std;int col; //2-20int row;string input; //1-200int main(){ wh原创 2013-01-03 19:43:32 · 806 阅读 · 0 评论 -
Sicily 1176. Two Ends
/*两头取数,玩家2固定使用贪心法,玩家1要想办法获取最高分 牵扯到动态规划 存储所有可能的运算结果:如果x+1 == y则:(x,y) = MAX(list[x], list[y])否则:(x,y)=MAX[(x,y-2), (x+1,y-1), (x+2,y)],事实上也就是选择两种选择的高者 *//*Run Time: 0.02secsRun Memory: 4232KB原创 2013-01-03 19:38:46 · 1082 阅读 · 0 评论 -
Sicily 1046. Plane Spotting
/*全部插入之后根据题目说明的规则进行排序,从大到小输出 小明很喜欢拍飞机,然后他希望在某一时间段里拍多架飞机。每个样例第一行三个数分别表示可选的连续的quarter数、小明需要的前N位最优解、小明等待的quarter数的最小值,第二行是表示每个可选的连续的quarter里面经过飞机的数目。*//*Run Time: 0.02secsRun Memory: 1472KB*/原创 2013-01-03 19:37:23 · 431 阅读 · 0 评论 -
Sicily 1021. Couples
/*寻找couple,类似括号匹配,利用栈解决,注意输入的位置是从1开始的,最后只要栈空即代表成功 另:每一个case之后都要记得初始化数据 另;对容器进行操作之前记得检查是否为空 *//*Passed all 2 test casesRun Time: 0.18secsRun Memory: 1488KB*/#include #i原创 2013-01-03 19:33:28 · 534 阅读 · 0 评论 -
Sicily 1027. MJ, Nowhere to Hide
/*使用map可以轻松完成的寻找马甲的题目 注意!记得题目最后要求要在每一个case后面输出一个空行!注意!记得include头文件!某些编译器不需要头文件照样跑函数,但是在sicily上就是A不了,例如algorithm *//*Run Time: 0secsRun Memory: 312KB*/#include #include #i原创 2013-01-03 19:34:31 · 529 阅读 · 0 评论 -
Sicily 1020. Big Integer
/*大数求余,模拟手算 *//*Run Time: 0.04secsRun Memory: 312KB*/#include #include using namespace std;//大数求余 int computMod(string longInt, int num){ int ten = 0; for(int i=0; i<longInt原创 2013-01-03 19:32:09 · 449 阅读 · 0 评论 -
Sicily 1051. Biker's Trip Odomete
/*简单的求周长乘以转数得到总长,除以时间得到均速重点在于精度控制,小数点后两位 *//*Run Time: 0secsRun Memory: 312KB*/#include #include using namespace std;double pi = 3.1415927;double mile = 5280 * 12; //5280 feet =原创 2013-01-03 19:38:15 · 776 阅读 · 0 评论 -
Sicily 1198. Substring
/*八个串排出最小字典序(8!枚举) 单纯地对子字符串进行排序是不行的,直接比较大小会忽略掉组合后因长度不同而产生的问题。例如是b和ba,b比ba小,但组合起来后,bba却比bab大。所以,对于子字符串s1和s2,此题的关键不在于s1和s2的大小关系,而在于s1+s2和s2+s1的大小关系*//*Run Time: 0secsRun Memory: 312KB*/#inclu原创 2013-01-03 19:39:30 · 611 阅读 · 0 评论