根据Norimaig在AIMA(人工智能:一种现代方法)中,深度优先算法并不完整(并不总是产生解决方案),因为有些情况下子树下降将是无限的.
另一方面,如果分支因子不是无限的,则称广度优先方法是完整的.但是,在DFS中子树无限的情况下,是不是有点像"东西"?
如果树的深度是有限的,那么DFS不能说是完整的吗?那么BFS是如何完成的而DFS不是完整的,因为BFS的完整性依赖于分支因子是有限的!
我正在制作一个游戏而且我正在使用它,以便当用户在游戏中按下"我"时,游戏面板被设置为不可见,同时它将库存面板添加到JFrame.然后,当用户退出库存时,它将删除库存JPanel,然后将游戏JPanel设置为可见.
现在这听起来不错,但每当它删除Inventory JPanel并返回游戏JPanel时,KeyListener就会停止工作.我删除了Inventory JPanel后,甚至在游戏JPanel上重新设置了setFocusable(true)属性,但它仍然没有使KeyListener工作.
这是我的游戏Jpanel的代码:
package javavideogame;
public class Game extends JPanel implements ActionListener, Runnable
{
public Game(MainCharacter character)
{
TAdapter a = new TAdapter();
addKeyListener(a);
setFocusable(true);
setDoubleBuffered(true);
setFocusTraversalKeysEnabled(false);
}
public void getInventoryScreen()
{
Main.inv = new Inventory();
Main.inv.sayHello();
Main.mainGame.getContentPane().add(Main.inv);
Main.game.setVisible(false);
Main.mainGame.validate();
}
public void closeInventory()
{
Main.inv.setFocusable(false);
Main.mainGame.remove(Main.inv);
Main.game.setVisible(true);
Main.game.setFocusable(true);
}
public class TAdapter extends KeyAdapter
{
public void keyPressed(KeyEvent e)
{
character.keyPressed(e);
}
public void keyReleased(KeyEvent e)
{
character.keyReleased(e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是库存代码:
package javavideogame;
public class Inventory …Run Code Online (Sandbox Code Playgroud) 可能重复:
如何将每个句子的第一个字母大写?
public static string CapitalizeEachWord(this string sentence)
{
string[] words = sentence.Split();
foreach (string word in words)
{
word[0] = ((string)word[0]).ToUpper();
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试为我自己为未来项目创建的帮助程序类创建扩展方法.
这个特定应该适当地利用每个单词.意思是,每个单词的第一个字母都应该大写.我无法解决这个问题.
它说我不能将字符串转换为字符串,但我记得在某些时候能够做到这一点.也许我忘了关键部分.
谢谢你的建议.
我一直在寻找类似的问题,找不到任何东西..Caret似乎不可用,我不知道如何深入到文本框或组合框中嵌入的任何控件.
尝试编写一个简短的方法,以便我可以解析一个字符串并提取第一个单词.我一直在寻找最好的方法来做到这一点.
我假设我会使用str.split(","),但是我想从字符串中抓取第一个第一个单词,并将其保存在一个变量中,并将其余的标记放在另一个变量中.
这样做有简洁的方法吗?
是否可以通过将此类的名称作为字符串输入来获取类的所有实例?
像这样的东西?
var instances = Reflection.findClass("com.someone.MyClass").getInstances();
Run Code Online (Sandbox Code Playgroud)
任何反馈都表示赞赏.谢谢.
在SQL 2008上调试SSMS中的SP时,我找不到任何调试选项.是否有可能在发生错误时使其中断,因此我可以检查错误引发的位置以及变量的值是什么在那时候?
我正在尝试调试的错误是:
消息8152,级别16,状态14,过程xxx,行58字符串或二进制数据将被截断.
我正在新的Win7 PC上配置VS.Net 2010以连接到Team Foundation Server存储库.在工具 - >选项下选择Team Foundation Server作为当前源控件插件后,VS.Net将继续切换回"无".
如果我选择TFS,请单击"确定",然后立即打开使用TFS的解决方案,VS.Net表示它无法联系源代码管理并询问我是否要暂时未绑定.奇怪的是,每一次尝试一切都有效,我可以连接到TFS.
如果我选择TFS,请单击"确定",然后立即返回"工具" - >"选项",3次中有2次"无"将被选为源控制提供程序.
还尝试使用和不使用管理员权限运行VS.Net,结果相同.
在我的C#编码体验期间,我看到了许多代码片段,其中使用了IDictionary [index] setter来添加新值:
var dictionary = new Dictonary<long, string>();
...
dictionary[1] = "one"; //assume we want to add new value here
Run Code Online (Sandbox Code Playgroud)
因此,不使用dictionary.Add(1,"one")开发人员通过索引器调用重写旧值(如果存在)(等于AddOrUpdate操作);
我认为当您尝试将值设置为已存在的键时,字典应该抛出异常(就像当您尝试获取非现有键时它会抛出).这是一个争论性的陈述,但我想将我的观点与你的观点进行比较.
我有一个包含一些项目的Visual Studio 2010解决方案.我可以使用Build - > Build Solution或Build - > Build MyCompany.MyProduct.MyProject成功构建.构建完成后,按CTRL + F5并成功运行启动项目.这按预期工作.
在我更改源文件后,保存它然后再次构建(使用Build - > Build Solution或Build - > Build MyCompany.MyProduct.MyProject)它成功构建.我仍然可以按CTRL + F5并运行启动项目.这再次按预期工作.
问题出现在以下场景中:更改源文件后,保存并直接按CTRL + F5,然后Visual Studio 2010显示BUILD FAILED并且没有错误.它并没有启动我的启动项目(当然).
我错过了什么吗?