C# 在给定起点和终点的图中求哈密顿路径数的程序

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为空: 选择最小的特征

给定一个具有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。我会试一试。