手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

八皇后问题的C#解答

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

改编自V星[视窗王子]应答程式,如下:

using System;
class Queen{
const int SIZE = 8;//皇后数
public static void Main()
{
int[] Queen = new int [SIZE];//每行皇后的位置
int y,x,i,j,d,t=0;
y = 0;
Queen[0] = -1;
while( true )
{
for (x=Queen[y] 1; x<SIZE; x )
{
for (i=0;i<y;i )
{
j = Queen[i];
d = y-i;
//检查新皇后是否和以前的皇后能相互攻击
if ((j==x)||(j==x-d)||(j==x d))
break;
}
if (i>=y)
break;//不攻击
}
if (x == SIZE) //没有合适的位置
{
if (0==y)
{
//回朔到了第一行
Console.WriteLine("Done");
break; //结束
}
//回朔
Queen[y]=-1;
y--;
}
else
{
Queen[y]=x;//确定皇后的位置
y ;//下一个皇后
if (y<SIZE)
Queen[y]=-1;
else
{
//任何的皇后都排完了,输出
Console.WriteLine("\n" t ':');
for(i=0;i<SIZE;i )
{
for (j=0;j<SIZE;j )
if(Queen[i] == j)
Console.Write('Q');
else
Console.Write('.');
Console.WriteLine();
}
y = SIZE -1;//回朔
}
}
}
}
}
八皇后有解92个。
另:我认为foreach和for循环在意义上是不同的,在这里应该用for.
望指正,此致。
重粒子@Y2K0928

--------------------------------------------------------------------------------

送交者: 视窗王子 列出任何还未回答的带星问题 于 9月 28, 2000 09:16:
主题:多谢重粒子兄 答复本贴
阅读相关的帖子

--------------------------------------------------------------------------------

回答: 给视窗王子:八皇后问题C#版 由 重粒子 于 9月 27, 2000 22:32:

很感谢您的注解连同优化,但是比较了一下结果,似乎我俩的结果是一致的。:-)
另外,关于打印的那部分,假如这样优化:
Console.Write(Queen[i]==j ? 'Q':'.');
似乎能够更简洁一些,粒子兄以为呢?
关于foreach和for, 的确,无论从字面上还是在文档中都让人感到for似乎比foreach更有确定性。然而,foreach毕竟是也一种遍历,关键是遍历的可重复性和法则,即,每次遍历的结果是可预计的和相同的。另外,我们能够通过定制Enumerator来决定foreach的遍历行为,使得“无法遍历”或“不可预计的”变成“可遍历”且“可预计的”,如同C 中重载[]算符使得链表“变成”了数组。

对于一些基本数据结构的遍历,比如数组,foreach还是和for一致的,但是粒子兄提醒的好,对任何事千万不要想当然,他除了会把您引入歧途外不会给您带来任何好处。

现在我正在和MS的C# Developer打交道,事实上现在MS中有部分产品的部分代码用上了C# (不知是正式的还是做试验)。很希望和粒子兄连同各位大大小小的虾兄弟姐妹们一起玩玩这新鲜玩意儿。



[1] [2] 下一页

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

热点关注
IDC资讯 虚拟主机 域名注册 托管租用 vps主机 智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 价格总览 | 资讯中心 | 友情链接 | 网站地图 | 招贤纳士 | RSS