摘要: 书中的一些主要算法设计总结: 1、 保存状态,避免中间计算 2、将信息预处理至数据结构中 3、分治算法 4、扫描算法:与数组相关的问题经常可以通过思考“如何将x[0…i-1]的解扩展喂x[0…i]的解?”来解决 5、累积。表中第i个元素的值为x中前i个值的总和,求任一阶段,即可用两阶段之和相减 阅读全文
posted @ 2011-11-03 20:26 你找我不到 阅读(122) 评论(0) 推荐(0)
摘要: Java代码 importjava.text.SimpleDateFormat; SimpleDateFormatformatter=newSimpleDateFormat("yyyy年MM月dd日HH:mm:ss"); DatecurDate=newDate(System.currentTimeMillis());//获取当前时间 Stringstr=formatter.format(curDate);import java.text.SimpleDateFormat; SimpleDateFormat formatter = new SimpleDateFormat ( 阅读全文
posted @ 2011-07-04 20:17 你找我不到 阅读(759) 评论(0) 推荐(0)
只有注册用户登录后才能阅读该文。 阅读全文
posted @ 2011-03-20 13:31 你找我不到 阅读(12) 评论(0) 推荐(0)
摘要: 这到题和1753差不多,但是游戏的操作不一样了。每次操作是将相应位置的行列进行倒转,并且要求打印路径。 这到题卡了很多地方,一开始是位操作的时候,对同一个位置做了两次异或操作,导致那个位置的值没有改变。题目要求打印路径,这个不难,宽搜打印路径只要每个子节点记录其父亲就可以了。代码改得差不多之后,提交却一直超时,后来看了一下别人的代码,才知道这到题与1753不一样,得需要剪枝。我以为状态很少,最多只有65536个状态。但是我错在了对每一个状态,都生成他的16个儿子,然后去看其是否已经出现过,那这样就相当于65536*16的复杂度了。看了别人的剪枝,他是在父节点求子节点的时候,子节点的计算从父节. 阅读全文
posted @ 2011-03-20 11:53 你找我不到 阅读(120) 评论(0) 推荐(0)
摘要: 因为准备按照网上的一些题目分类来做题,提高对知识点的全面掌握,所以就从这到题开始做了。 题目的是一个游戏,给出一个只有黑白两种颜色的棋子,棋盘是16*16的。每次游戏的操作针对棋子的位置进行,倒装相应位置棋子的颜色以及其周围4个方向的颜色。求最少多少次操作后能将棋子倒装成一个颜色,全为黑色或者权威白色。 这到题很久之前做过了,看了一下以前的做法,将棋盘的状态转换为了整型的数据存储。这次写的时候是完全用了为操作,棋盘的数据用了一个short来处理。折腾了一下,但空间和时间还是差不多,可能位操作没写得很好。 阅读全文
posted @ 2011-03-20 11:39 你找我不到 阅读(109) 评论(0) 推荐(0)
摘要: 这到题我是不会做的,没有解决思路。看了discuss的代码之后,也懒得去写了。这家伙的代码写得好漂亮,我得练多少才有这个水平啊。 这到题题意大概就是给出一个N*N大小的正方形,然后有M(M最大为16)个大小为L*L(1<= L<=10)的正方形,问该这些正方形是否能正好填满该给出的正方形而不浪费或不够。 高人的做法是进行搜索,因为要刚好填充给出的正方形,那么就每一个正方形都要用上,并且拼起来的正方形必须连在一起。所以就可以从左往右,从上往下进行深搜,尝试每一种放置的方法。高人有一个优化的策略是每次放置的时候从被放置了最少小正方形的那一列开始放置,如果不行就回溯。 因为题目只给出了1 阅读全文
posted @ 2011-03-12 10:21 你找我不到 阅读(161) 评论(0) 推荐(0)
摘要: 题意是对一个数列,给出一个位置,求该数是什么。数列形式如下: 11212312341234512345612345671234567812345678912345678910123456789101112345678910 比如,第一位是1,第三位是2…… 这种题也没什么技巧,就是纯按思路来做。 我的做法是: 1、求出1位、2位、3位数等最大数的所在位置,即9、99、999……等数 2、然后比较要求的位置所在的数据范围,假设是在4为数的范围,即所求数位于123……9999的范围 3、求出该数所在序列的最大值,即所求的数所在序列的上界,假设是123……8888 4、求出该数是在1位还是2位还是. 阅读全文
posted @ 2011-03-11 00:10 你找我不到 阅读(107) 评论(0) 推荐(0)
摘要: 先说这道题的意思,题意是给出构造一个通信系统需要N个设备,然后每一个设备都有M个厂家报价,通信系统的带宽由构成设备的最小值取得。题目要求带宽B/报价P,即B/P最大。 一看到题目的时候,没有任何头绪,一开始是想到可能是特殊的数据结构实现的,所以也没深想就直接看discuss,一眼看到动态规划之后,就开始考虑动态规划的做法。 虽然我的动态规划超时了,但还是说一下我的实现思路。我的做法是,定义一个类型为map<int,int>的变量数组,key表示当前设备能满足的合理带宽,value表示对当前带宽的最小价格。然后对每一设备的每一个厂家于上一个设备的map变量的数据比较,求得当前设备可以 阅读全文
posted @ 2011-03-10 23:57 你找我不到 阅读(178) 评论(0) 推荐(0)
摘要: 不得不说是一道水题了。题意大概是给出一个6*6的包装箱,然后对1*1,2*2,3*3,4*4,5*5,6*6的物品进行打包,求最少的包裹数。写了一个比较长的代码,但大概思路和discuss上的比较短的代码一致。 手动对各个规格的暴力了一遍,求出装某一规格物品是还能装其它物品的数量。然后就是一些细节的处理。 阅读全文
posted @ 2011-03-07 22:21 你找我不到 阅读(116) 评论(0) 推荐(0)
摘要: 1016不得不说是一道水题了,我实在想不出来难点在哪里,但事实就是这样,耗费了一个上午的时间来调程序。可能真的是写程序太少了,很多解题的基本方法都不知道。 好吧,回来说1016。解体思路很简单,首先求字符串变换之后的结果,然后检查该结果之前是否已经出现过,如果出现过,根据之前曾经出现过的位置来决定输出的结果。 这到题我写了两次,第一次是自己在字符串变换的时候,手动将数值转换为需要的字符串,然后再循环的求当前的字符串结果与之前的结果是否相等。第二次是用了spritf加map来做,代码写起来很简单和流畅。 1、sprintf的用法: sprintf 跟printf 在用法上几乎一样,只是打印的目. 阅读全文
posted @ 2011-03-07 16:28 你找我不到 阅读(186) 评论(0) 推荐(0)