| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1055 人关注过本帖
标题:求教八皇后问题
只看楼主 加入收藏
wxjeacen
Rank: 7Rank: 7Rank: 7
等 级:禁止访问
帖 子:1291
专家分:628
注 册:2009-3-22
收藏
得分:0 
我的code 这么经典...


难道能看懂的就只那么几个人...

生命不熄,战斗不止.
2009-08-09 19:49
soler
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:181
专家分:1077
注 册:2005-7-16
收藏
得分:0 
以下是引用wxjeacen在2009-8-9 19:49的发言:我的code 这么经典...难道能看懂的就只那么几个人...

程序代码:
///////////////////////////////////////////////////////////////////
//   C脚本编译编译器测试程序 exp3.sc
//
//   该例子使用递归算法计算八皇后问题,该例子显示信息比较长,
//   在Win2000下会超出显示允许长度,可以使用以下命令重定向到
//   一个文本文件中再查看:
//       scvm exp3.so >> exp3.txt
//
//   作者:何清
//   日期:2003-07-04
//
///////////////////////////////////////////////////////////////////

int result = 1;
int chess[8];

// 根据前面几行的子,检查这一行所放的子是否合法
int check( int n )
{

 int i;
    for (i = 1; i <= n - 1; i++)
    {
     if (chess[n] == chess[i] + (n - i) ||
      chess[n] == chess[i] - (n - i) ||
      chess[n] == chess[i] )
      return 0;
    }
    return 1;
}

// 递归函数:放子
void putchess( int n )
{
    int i;
    if (n <= 8)
    {
     for (i = 1; i <= 8; i++)  // 将第n行从第一格(i)开始往下放
     {
      chess[n] = i;
      if (check(n) == 1) // 若可放,则检查是否放满
      {
       if (n == 8)
          show_chess(); // 若已放满到8行时,则表示找出一种解,打印出来
       else
         putchess(n + 1); // 若没放满则放下一行 putchess(n+1)
      }
    }
   }
}

// 函数:打印结果
void show_chess(void)
{

 int i;
    printf("Result - %d\n", result);
    for (i = 1; i <= 8; i++)
    {
     printf("(%d): %d\n", i, chess[i]);
    }
    ++result;
}

// 主程序
int main()
{
    printf("This is for 8 X 8 matrix.\n");
    putchess(1); // 从每一行开始放子
   
    return 0;
}

看完上面的代码,你的那个就好理解了,算法一样。
2009-08-09 22:09
CrystalFan
Rank: 8Rank: 8
来 自:江苏南京
等 级:蝙蝠侠
帖 子:187
专家分:802
注 册:2009-7-30
收藏
得分:0 
回复 楼主 骓鲟

好啊,可以加我QQ,注明论坛昵称就行。

你如果没有搞懂递归函数的执行过程,建议你看点简单的递归代码如求n!的代码,试着在纸上演一遍。
提示,每次递归时,函数内部的变量和传递的参数都是独有一份的,按着书上的框图去演算。
2009-08-10 19:00
LSYHEFENG
Rank: 2
等 级:论坛游民
帖 子:112
专家分:71
注 册:2010-7-17
收藏
得分:0 
效率太低,寻求非递归算法
2010-08-04 16:57
快速回复:求教八皇后问题
数据加载中...
 
   



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

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