| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1054 人关注过本帖
标题:八皇后问题回溯算法演示系统(有源代码)(推荐)
只看楼主 加入收藏
ljc_zy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:56
专家分:131
注 册:2009-7-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
八皇后问题回溯算法演示系统(有源代码)(推荐)
原文见:http://www.
       通过,几天的学习研究,对c#绘图的基本的应用已经有了一定的了解,因此决定写一个程序检验一下学习的成果。恰好,本人一直在研究算法,虽然水平不是很高,但是也经常和一些朋友探讨。有些刚刚学习算法的人往往因为对算法的执行过程没有直观的认识,因此我就萌生了做算法演示系统的想法。

       这次做的算法演示,是八皇后问题的回溯算法。想当年我也是费了好大劲才掌握回溯算法,因此,很渴望有一个软件能够帮助到大家,不知道我做的这个软件对你们是否有帮助。

       首先,让我们看一下这个问题的描述。八皇后问题说的是在8*8国际象棋棋盘上,要求在每一行放置一个皇后,且能做到在竖方向,斜方向都没有冲突。更通用的描述就是有没有可能在一张N*N的棋盘上安全地放N个皇后?

让我们回忆下,八皇后问题的回溯算法,我的博文有c语言描述的算法实现http://blog.。具体的算法描述,大家google一下吧:)。

       C#版本的回溯算法如下:

           class q

    {

        const int n=8;

        int[] x = new int[n];

        int count;

        public void dosearch()

        {

            traceback(0);

            System.Windows.Forms.MessageBox.Show(count.ToString());

        }

        private bool CanSet(int t)

        {

            for (int i = 0; i < t; i++)

            {

                if (x[i] == x[t] || System.Math.Abs(x[t] - x[i]) == t - i)

                    return false;

 

            }

            return true;

        }

        private void

            traceback(int t)

        {

            if (t >= n)

            {

                count++;

                return;

            }

            for (int i = 0; i < n; i++)

            {

                x[t] = i;

                if (CanSet(t))

                    traceback(t + 1);

            }

            

        }

    }

       现在我要做一个算法,演示算法的执行过程。这里用到前面GDI+学习系列的知识。如在bitmap上作图,防屏幕刷新。也有一些新的东西,如截取部分图片并保存,多线程后台执行等。

       对于八皇后问题我们知道有92种合法的布局,本演示系统提供保存合法布局为jpg文件的功能,保存的内容在可执行文件夹下,以picture+序号为文件名,如第一个搜索的布局保存的文件名是picture1.jpg。下面给出几个布局文件。

 



 picture1.jpg



picture2.jpg



picture3.jpg

源码地址:http://www.
搜索更多相关主题的帖子: 源代码 算法 皇后 系统 回溯 
2009-07-28 07:57
NTYLWJ
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:191
专家分:698
注 册:2008-12-2
收藏
得分:20 
还没学习到算法。新手路过中..
2009-07-28 08:29
快速回复:八皇后问题回溯算法演示系统(有源代码)(推荐)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016587 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved