- 浏览: 127457 次
- 性别:
- 来自: 上海
最新评论
-
lliiqiang:
最简单的显示 存储分离,有的时候错别字与错误数据存储兼容。还有 ...
关于软件可扩展性与代码防御性编程的一点思考 -
bmqnc:
cqh520llr 写道sb,不帖代码,以后人家搜索到了浪费人 ...
今天自己做了redo-undo功能 -
cqh520llr:
我也觉得,代码风格和不定性样式太多了,
编码风格不取决于自己,取决于领导班子和现有代码 -
cqh520llr:
sb,不帖代码,以后人家搜索到了浪费人家时间,而且这个代码贴出 ...
今天自己做了redo-undo功能 -
shiqicai:
太隐晦,看不懂。
康神与顿神
文章列表
“这里有1000个玻璃球,分别装在10个盒子中,你们只需告诉我一个数字,我不用打开盒子,不用数就能照你们说的数拿出来”
这题其实很简单,只是当时没想到。
其实盒子里放的是2的幂次个球,因为
0000000001
0000000010
.
.
.
.
1000000000
这10个数能构成1023内的任何一个数。faint!为什么当时面试的时候就没想出来???
这题不难,求哈密顿路的,就是多了一个限制条件。
主要是合并满足给定路径的哈密顿路时要进行合并,可以用并查集的来做,我是直接用哈希表来做的,求出满足条件一共有几组的聚集后,其实就是求这些聚集的一个全排列,只不过聚集本身有可以变换为两种情况,不管怎样,这在高中排列组合中学过,还是很简单的。
另外,由于Java中提供了大数,因此可以用大数做比较大的那种运算,如求50的全排列。
~~.
import java.util.*;
import java.util.regex.*;
import java.math.*;
public class HamiltonPath {
publ ...
int x;
int y;
long z=x*y;
以上代码貌似已经做到处理了溢出,但实际上在x*y时已经发生了溢出,所以即便z是long类型最后结果也会出错。正确的做法应该是
long z=x*1L*y;
今天写一个算法这个溢出地方没注意,结果贡献了WA一次。
最近做了很多题,但是又太懒,总不想写解题报告。从现在开始,每次做完题就写解题报告。
但是我发现做算法的依然要读别人的程序,因为可能你的程序的算法不是最优的。只有吸取别人的优秀思想才能进步,自己一味的coding是没任何进步的。
这题不难,主要是递归的一个过程,并且在递归的过程中最好保存好之前已经计算好的每个进程的时间值。
需要特殊处理的地方是当进程出现循环依赖关系的时候,此时要判断是否形成环,我用的是哈希表集合来判断,每次计算一个进程时判断哈希集合中是否存在该进程,如果已经存在则表明形成环,否则将进程编号加入集合中。当然,当计算完一个进程的时间时,从哈希集合中删除该进程编 ...
魔方有很多类型,国际上还有各种比赛,还有各种玩法,如盲转。这里的魔方是最经常见到那种6面,每个面有9个方块那种的rubik's cube。
将单面转出来其实挺简单的,关键是看好一个子后计算好步长,就能够转到正确的位置。并在转的过程注意回避原来转好的子。
魔方据说还有公式,不过我讨厌去记公式。
转出一面太低级了,还没到转出一层,继续努力啊。
题目:一个猴子手上有许多硬币,第一次他将所有的硬币向上抛。落地之后进行如下操作:
1.看见正面的硬币继续往上抛
2.看见反面的将它反过来变为正面。
继续1,2步骤,问最后会不会正反面会不会趋于稳定。
我用的是解方程的做法,据说很多人用的是求极限。
在第i次和第i+1次的正反面之间可以建立 递推关系,根据递推关系可以求出其正反面的比值的。当然,如果最后正反面不能趋于稳定,则方程是无解的。
具体过程不写了,大家自己想。其实挺简单的。
都用于比较对象,但二者区别在于:comparable是用于类本身实现的一个接口。而当类固定之后,类的客户端在无法修改类的情况下,或者类本身的comparable接口不能做到特定应用的比较的时候,我们可以自己定义comparator比较器。
在Arrays的排序函数中如果指定了以comparator来排序函数,那么即便类本身定义了comparable接口,依然用的是comparator来比较。
下一步准备有空研究一下java中的排序源代码。
这章主要讲了框架设计上的一些问题,框架设计的API原则:
1.控制对用户可见的部分,从而尽量减少框架公开的部分
2.使用接口
3.在期望用户能够对框架进行扩展的点上提供良好定义的“hook”
4.在不希望用户进行扩展的点上禁止用户扩展
框架实际上是通过限制一些条件,使框架的用户只能按框架的流程来走。但是FIT框架颠覆了这种理念。(PS:FIT这个名称怎么和tsinghua的FIT楼名称一样,faint!)
FIT与传统这种理念不同的地方在于它它对自己的流程充满的信心,能够确信以后他自己以后的流程不再改变,所以他做了一点:大量公开成员函数以及一些内部成员函数。
这章也挺经典的,以前自己开发 ...
从没想过测试原来这么漂亮,不过这章讨论的测试是单元测试,并且主要讨论的是测试中的一些技术,像集成测试等并没有讨论,那属于测试的更大范畴了。当然,本书本身题目是代码之美,当然更关注于code这块。
测试因三个方面而漂亮:(我觉得本章讲的很精辟的一点)
1。测试因简单而漂亮。
2.测试因时 代码更优雅,更可维护和更易测试而漂亮。
3.测试因其广度和深度而漂亮。
话又说回junit,本身这个框架写的相当好的。有空要读读junit的框架设计。
API中的陷阱挺多的,看以下:
System.out.println(2.0-1.1);
System.out.format("%.2f",2.0-1.1);
第一个语句进行正常的浮点运算,当然2.0-1.1是不能精确表示的,因此结果不是0.9。
但是第二个语句的format中是将参数作为对象来对待,输出结果是0.9。因此我怀疑此处用到了大数。看来此处要看看源代码中是怎么实现的。或者可以利用Jprofiler等工具查看对象的增长情况。
其实大家平时都明白去小公司能锻炼自己,但是实际上我们的行动表明更喜欢去大公司,因为大公司看起来比较风光一些,当然了钱也稍多一些,所以我们年轻人都明白创业,但是真正能够做到这一点的了了几个,尤其it行业,我们一训练出来就决定了我们只能当it民工。所以这个世界上真正成功的人很少。所谓的白领或者XX工程师说白了也是给老板打工的料。我们都是这样的人,我们说话不算数,我们说着话,做着另一件事。别人说他想做的未必就是他真想做的,别人劝你做的,未必你真要做。
人生就是这样,男人需要学会面对,尤其在自己最低谷的时候。当运气不好的时候,尤其需要面对困难。
我发现我的代码就像小孩子写的
- 博客分类:
- 心情·心绪
long s = 0;
for (int i = 0; i < 3; i++) {
s += (x[i] * y[(i + 1) % 3] - y[i] * x[(i + 1) % 3]);
}
if (s == 0) {
out.print("not a triangle");
} else {
long[] l = new long[3];
for (int i = 0; i < 3; i++) {
l[i] = (x[i] - x[(i + 1) % 3]) * (x[i ...
一个是数据计算上的精度问题,即中间过程计算的结果可能超出数据所能表示的最大范围,
如int与int相乘可能超过int所能表示的范围。
第二个是数据的表示上的精度,如sqrt函数,当定点部分数值无法精确表示整数所代表的那个确切值时,可能造成精度上的损失。如可能一个数的开平方根可能不是很准,与准确值可能相差0.1这样的数值。这也是计算机中无法精确表示一些数的原因。
当然,用大数总是能解决这些精度表示上的问题的。
个人认为java库大数库确实很牛B,从这里说java比c++好用许多。当然,用大数性能上肯定会有下降。
NLP研究用了grammarscope,结果貌似grammarscope用了貌似1.6编译的,而我机器上市1.5,因此报错。
这种错误下只能只能重新装了1.6了,除非我用的jdk1.5重新编译它的源代码。
其实java.lang.UnsupportedClassVersionError本质上说是compile level与jre不一致导致。比如说是用1.6编译,compile level用的是1.5或者1.6,而jre是1.4,很明显或出错,因为sun的1.5或1.6中可能引入一些新的变化。
装了1.6之后,在cmd上grammarscope.bat文件程序就起来了。好像事情到这里就结束了 ...
如题,我在:http://acm.xtu.edu.cn/OnlineJudge/index.php/problem/read/id/1325
看到同样是这题,当然题号不同,但题目一样的,我用的是java,一摸一样的程序,xtu上判断AC,POJ判断WA,点解?xtu上memory市9972kb,time是62ms.POJ上题号是3630.
以下是我的程序:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap ...