CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  专题开发/技术/项目 >  数据结构与算法

求解八皇后问题算法(C语言版)

楼主Lincon(学习者)2001-03-13 14:19:00 在 专题开发/技术/项目 / 数据结构与算法 提问

问题点数:100、回复次数:7Top

1 楼jiajunbo(阿波)回复于 2001-03-13 14:28:00 得分 20

关于这个问题在历年的计算等级考试中出现过。  
  在《   计算机等级考试辅导资料有过非常详细的分析。  
  如有兴趣可以与我交流一下。  
  Top

2 楼Lincon(学习者)回复于 2001-03-13 17:09:00 得分 0

有现成的吗?  
  Top

3 楼Kevin_qing()回复于 2001-03-13 17:24:00 得分 10

穷举Top

4 楼asper()回复于 2001-03-13 18:03:00 得分 25

这边有个c++的  
  http://www.chinaprogrammer.com/software/stru/file01/file0004.asp?record=4  
  Top

5 楼ck4()回复于 2001-03-13 21:31:00 得分 10

找本C版的数据结构教材应该都会有的Top

6 楼redly(小石头)回复于 2001-03-14 21:03:00 得分 25

我给你一个C的源程序。  
   
  #include   <conio.h>  
  #define   MAXN   20  
  int   n,   m,good;  
  int   col[MAXN+1],a[MAXN+1];  
  int   b[2*MAXN+1],c[2*MAXN+1];  
  main()  
  {  
  int   i,j;  
  int   num=1;  
  char   awn;  
  printf("Input   n:   ");   /*输入皇后的个数,例如8*/  
  scanf("%d",&n);  
  for(j=0;j<=n;j++)  
    a[j]=1;  
  for(j=0;j<=2*n;j++)  
  b[j]=c[j]=1;  
  m=1;  
  col[1]=1;  
  good=1;  
  col[0]=1;  
  do{  
  if(good)  
  if(m==n)  
  {  
  printf("NO.   %d   method.\n",num);     /*输出第     num种排列方法*/  
  printf("   ");  
  for(i=1;i<=n;i++)  
            printf("%4d",i);  
            printf("\n");  
   
  for(i=1;i<=n;i++)  
      {   printf("%d",i);  
      for(j=1;j<=n;j++)  
              {if(j==col[i])  
  {  
  printf("       Q");     /*Q的位置为皇后的位置*/  
    }  
                else   printf("       *");  
                }  
          printf("\n");  
          }  
   
  awn=getch();  
  if(awn=='Q'||awn=='q')  
  exit();  
  else  
      num++;  
  while(col[m]==n)  
  {  
  m--;  
  a[col[m]]=b[m+col[m]]=c[n+m-col[m]]=1;  
  }  
  col[m]++;  
  }  
  else{  
  a[col[m]]=b[m+col[m]]=c[n+m-col[m]]=0;  
  col[++m]=1;  
  }  
  else{  
  while(col[m]==n)  
  {  
  m--;  
  a[col[m]]=b[m+col[m]]=c[n+m-col[m]]=1;  
  }  
  col[m]++;  
  }  
  good=a[col[m]]&&b[m+col[m]]&&c[n+m-col[m]];  
  }  
  while(m!=0);  
  }  
   
   
  上述程序已在TC2.0中通过,有什么问题可以发EMAIL给我,zhlwood@sina.com  
  Top

7 楼wildboar(酷狗)回复于 2001-03-14 22:59:00 得分 10

计算机等级考试辅导资料中的算法太经典了!!!  
  Top

相关问题

  • 求解八皇后算法?
  • 求解C++算法题目
  • 求解C++算法题目
  • 纸牌游戏的C算法求解
  • 算法求解
  • 求解算法
  • 求解一般线性方程组的算法及C程序
  • 算法求教:古老的数学问题.用C求解
  • 求解算法,急
  • 求解一算法

关键词

  • maxn+1
  • 皇后
  • 问题

得分解答快速导航

  • 帖主:Lincon
  • jiajunbo
  • Kevin_qing
  • asper
  • ck4
  • redly
  • wildboar

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo