Tag: 计算机科学

什么是资格意味着什么?

在阅读关于编程的文章,手册等时,我总是遇到qualified的词。 就像在java中一样,完全限定的类名是com.example.Class。 阅读本文,将C ++中的范围解析operator ::定义为用于限定隐藏名称,以便您仍然可以使用它们。 这有定义吗? 因为它似乎每次都在不同的环境中使用。

创建一个java程序来解决二次方程

求解二次方程 到目前为止,我已写下以下内容。 我不确定如何引入第二种方法 public static void main(string args[]){ } public static double quadraticEquationRoot1(int a, int b, int c) (){ } if(Math.sqrt(Math.pow(b, 2) – 4*a*c) == 0) { return -b/(2*a); } else { int root1, root2; root1 = (-b + Math.sqrt(Math.pow(b, 2) – 4*a*c)) / (2*a); root2 = (-b – Math.sqrt(Math.pow(b, 2) – 4*a*c)) / (2*a); […]

数字比较比字符串比较更快?

我听说哈希(即将字符串或对象转换为数字)用于字符串,因为它比字符串更容易比较数字。 如果是真的,这是什么原因?

信号量如何工作?

信号量可以低于0吗? 我的意思是,说我有一个N = 3的信号量,我叫“向下”4次,然后N将保持为0,但是一个进程将被阻止? 而另一方面,如果在一开始我打电话,N可以高于3吗? 因为正如我所看到的那样,如果N在开始时我可以多次调用3次,那么稍后我可以调用更多次,因此在关键部分放入更多进程然后信号量允许我。 如果有人为我澄清一点,我会非常感激。 格雷格

请问java RMI的意义吗?

为什么人们使用RMI,或者什么时候应该使用RMI? 我在oracle的网站上阅读了关于RMI的那些教程。但它没有提供足够的实际例子。 据我了解,软件的模块应尽可能“无关且分离”。 RMI似乎是一个与我高度耦合的例子。 为什么这不是一个糟糕的编码习惯? 我认为客户端应该只发出指令,而对象的所有实际操作都是由服务器完成的。 (我目前正在攻读计算机科学学士学位并且非常缺乏经验,所以如果我理解这些概念错误,请纠正我。) 提前致谢!

8-Puzzle Solution无限执行

我正在寻找使用A* Algorithm 8-puzzle问题的解决方案。 我在互联网上找到了这个项目。 请参阅文件 – proj1和EightPuzzle 。 proj1包含程序的入口点( main()函数),EightPuzzle描述了拼图的特定状态。 每个州都是8拼图的对象。 我觉得逻辑没有错。 但它为我尝试的这两个输入永远循环: {8,2,7,5,1,6,3,0,4}和{3,1,6,8,4,5,7,2,0} 。 它们都是有效的输入状态。 代码有什么问题? 注意 为了更好地查看,请在Notepad ++或其他文本编辑器(具有识别java源文件的能力)中复制代码,因为代码中有很多注释。 由于A *需要启发式算法,因此他们提供了使用曼哈顿距离的选项以及计算错位图块数量的启发式算法。 为了确保首先执行最佳启发式,他们实现了PriorityQueue 。 compareTo()函数在EightPuzzle类中实现。 可以通过更改proj1类的main()函数中的p1d值来更改程序的输入。 我告诉我上述两个输入存在解决方案的原因是因为这里的applet解决了它们。 请确保您从小程序中的选项中选择8-puzzle。 EDIT1 我给出了这个输入{0,5,7,6,8,1,2,4,3} 。 花了大约10 seconds ,结果有26个动作 。 但是小程序用A*在0.0001 seconds进行了24 moves 。 EDIT2 调试时我注意到,随着节点的扩展,新节点在一段时间后都有一个启发式 – f_n为11或12 。 他们似乎永远不会减少。 因此,在一段时间之后, PriorityQueue(openset)中的所有状态都具有11或12的启发式。因此,没有太多可供选择的扩展节点。 最小的是11,最高的是12.这是正常的吗? EDIT3 这是无限循环发生的片段(在proj1-astar()中 )。 openset是包含未展开节点的PriorityQueue,而closedset是包含展开节点的LinkedList。 while(openset.size()> 0){ EightPuzzle […]