八皇后问题v1
来源:互联网 发布:apache hadoop是什么 编辑:程序博客网 时间:2024/05/10 08:52
#include<stdio.h>
/* 八皇后问题 */
/* 该算法是个比较挫的的方法,而且很难看懂 */
int a[8+1] = { 1,1,1,1,1,1,1,1,1 }; //表明i行是否可以放皇后: 1可以放,0不可以放
int c[17] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; // 主对角线可以放皇后否
int d[17] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; // 次对角线可以放皇后否
int m_t[8+1] = { 0,0,0,0,0,0,0,0,0 }; // m[j]=i , j列i行有皇后
/*
* NOTE: i 表示从第几行开始放, n 表示几个格
*/
void Trail( int i , int n , int m_t[])
{
int j;
int index;
int m[9];
for(index = 0 ; index <=8 ; index++ )
m[index] = m_t[index];
if( i>n )
{
for(j=1 ; j<=n ; j++ )
printf("(%d,%d) ",m[j],j);
printf("/n");
}
else
{
for (j=1; j<=8; ++j)
{
if( m[j] != 0 )
continue;
m[j] = i; // 在第i行,第j列放置一个棋子
// 如果当前布局合法的话
if ( a[ m[j] ] && c[i+j] && d[i-j+n] )
{
a[ m[j] ] = c[i+j] = d[i-j+n] =0;
Trail( i+1, n , m);
a[ m[j] ] = c[i+j] = d[i-j+n] =1;
}
m[j] = 0;
}
}
}
int main(void)
{
Trail(1,8,m_t);
return 0;
}
- 八皇后问题v1
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题(2)
- 八皇后问题(3)
- 八皇后问题
- 八皇后问题程序
- 浅谈八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题求解
- 八皇后问题
- 八皇后问题
- Sql 取当天或当月的记录
- VS.NET 2005 Debugger Timeout with IIS 7.0
- Hibernate学习总结
- 使用JMeter进行性能测试
- Seam JBPM integration
- 八皇后问题v1
- 服务于数据库镜像会话的TCP端点提供的七层安全性
- js变量作用域及可访问性的探讨
- 在UNIX环境下创建第二个数据库实例
- 单击gridview控件外部的一个按钮,获取gridview中的一列数据,获得的数据插入到另一个表中
- C# 编码规则
- 对话框函数
- 从切图到网页生成全攻略
- 基本算法(用 PASCAL 描述)