C# 在给定起点和终点的图中求哈密顿路径数的程序
给定一个具有n²路径节点的图,并且给定起始节点总是在右上角(点a),结束节点总是在右下角(点B),我需要编写一个C#程序,该程序将确定从a到B的哈密顿路径的数量,给定n(假设n某种蛮力) 构建图表。 构建一个图形运行器。 缓存所有运行信息。 让运行者重新运行图表,并从运行信息中排除所有决策。 当运行程序无法再运行时,过滤缓存的数据并计算结果 用C语言实现# 安装一个类似nunit的testframework。 写下你需要的功能列表 重复此操作,直到featurelist为空:C# 在给定起点和终点的图中求哈密顿路径数的程序,c#,algorithm,graph-theory,hamiltonian-cycle,C#,Algorithm,Graph Theory,Hamiltonian Cycle,给定一个具有n²路径节点的图,并且给定起始节点总是在右上角(点a),结束节点总是在右下角(点B),我需要编写一个C#程序,该程序将确定从a到B的哈密顿路径的数量,给定n(假设n某种蛮力) 构建图表。 构建一个图形运行器。 缓存所有运行信息。 让运行者重新运行图表,并从运行信息中排除所有决策。 当运行程序无法再运行时,过滤缓存的数据并计算结果 用C语言实现# 安装一个类似nunit的testframework。 写下你需要的功能列表 重复此操作,直到featurelist为空: 选择最小的特征
- 选择最小的特征
- 写一个失败的测试
- 编写代码以通过测试
- 确保所有测试通过
- 重构以使其更具价值
- 从功能列表中清除项目
编辑以回答评论中的一些问题
- 将其解压缩到您选择的文件夹中
- 创建一个空的控制台应用程序
- 浏览NUnit目录以查找框架,并将该框架添加到项目中
- 浏览NUnit目录以查找gui运行程序,并将其添加到项目中
- 实际上,我们不希望使用控制台运行项目,我们只是不希望自动创建表单,打开属性并将项目重新声明为windows应用程序
- 用下面的代码替换program.cs
- 编译并运行。在gui中单击运行,如果出现异常,请按F5
- 恭喜你,你刚刚用过它
using System;
using NUnit.Framework;
namespace EC_Connect_Test
{
class Program
{
[STAThread]
static void Main(string[] args)
{
string fullPath = System.Reflection.Assembly.GetAssembly(typeof(Program)).Location;
NUnit.Gui.AppEntry.Main(new string[] { fullPath });
}
}
public class MathClass
{
internal static double Divide(int A, int B)
{
if (B == 0) throw new DivideByZeroException();
return (Double)A / (Double)B;
}
}
[TestFixture]
class MyFirstTestClass
{
[Test]
public void DividingTwoIntegersResultIsDouble()
{
Double expected = 3.3;
Double actual = MathClass.Divide(33, 10);
Assert.AreEqual(expected, actual);
}
[Test]
public void DividingByZeroShouldThrow()
{
Assert.Throws<DivideByZeroException>(
() => { MathClass.Divide(33, 0); }
);
}
}
}
这将不会编译,因为图形还不存在。但让它编译并通过测试将满足您的第一个功能,您可以通过先编写测试来继续实现下一个功能。一些蛮力的东西
构建图表。
构建一个图形运行器。
缓存所有运行信息。
让运行者重新运行图表,并从运行信息中排除所有决策。
当运行程序无法再运行时,过滤缓存的数据并计算结果
用C语言实现#
安装一个类似nunit的testframework。
写下你需要的功能列表
重复此操作,直到featurelist为空:
- 选择最小的特征
- 写一个失败的测试
- 编写代码以通过测试
- 确保所有测试通过
- 重构以使其更具价值
- 从功能列表中清除项目
编辑以回答评论中的一些问题
- 将其解压缩到您选择的文件夹中
- 创建一个空的控制台应用程序
- 浏览NUnit目录以查找框架,并将该框架添加到项目中
- 浏览NUnit目录以查找gui运行程序,并将其添加到项目中
- 实际上,我们不希望使用控制台运行项目,我们只是不希望自动创建表单,打开属性并将项目重新声明为windows应用程序
- 用下面的代码替换program.cs
- 编译并运行。在gui中单击运行,如果出现异常,请按F5
- 恭喜你,你刚刚用过它
using System;
using NUnit.Framework;
namespace EC_Connect_Test
{
class Program
{
[STAThread]
static void Main(string[] args)
{
string fullPath = System.Reflection.Assembly.GetAssembly(typeof(Program)).Location;
NUnit.Gui.AppEntry.Main(new string[] { fullPath });
}
}
public class MathClass
{
internal static double Divide(int A, int B)
{
if (B == 0) throw new DivideByZeroException();
return (Double)A / (Double)B;
}
}
[TestFixture]
class MyFirstTestClass
{
[Test]
public void DividingTwoIntegersResultIsDouble()
{
Double expected = 3.3;
Double actual = MathClass.Divide(33, 10);
Assert.AreEqual(expected, actual);
}
[Test]
public void DividingByZeroShouldThrow()
{
Assert.Throws<DivideByZeroException>(
() => { MathClass.Divide(33, 0); }
);
}
}
}
因为图形还不存在,所以它不会编译。但是,让它编译并通过测试将满足您的第一个功能,您可以通过先编写测试来继续实现下一个功能。问题中您最困惑的任何特定部分?请人简单地解决问题可能不会成功太好了。这个问题与区别非常相似,但是,他已经提出了一个暴力解决方案。我需要首先指出这一点。任何帮助我的链接或伪代码都将不胜感激。我只需要朝正确的方向努力。问题的任何特定部分让你最困惑吗?Aski如果有人只是简单地解决这个问题,可能不会太好。这个问题与区别非常相似,但是,他已经提出了一个暴力解决方案。我需要首先指出这一点。任何帮助我的链接或伪代码都将不胜感激。我只需要朝着正确的方向努力。我已经以前从未使用过任何测试框架,因此我不熟悉nunit,也从未听说过featurelist。“选择最小的特性”是什么意思?失败测试的过程是什么?通过测试的过程是什么?谢谢Johannes。我会试一试。我以前从未使用过任何测试框架,因此我对nunit不熟悉,也从未听说过特性列表。“选择最小的特性”是什么意思考试不及格的过程是什么?通过考试的过程是什么?谢谢Johannes。我会试一试。