首页 / LUA / 【算法】用Lua解决八皇后的问题
【算法】用Lua解决八皇后的问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【算法】用Lua解决八皇后的问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1949字,纯文字阅读大概需要3分钟。
内容图文
最近在学习Lua脚本,经过了不到十天的学习,也算是对语法有所了解吧,另外正好也看到了八皇后问题,感觉挺有意思的 就试了试用算法解出来。
八皇后问题的原题是:八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。
以下是lua的算法代码:
local eightQueen = { 0,0,0,0,0,0,0,0,} local count = 0 function check(row,column) --检查 local data for i = 1,row do data = eightQueen[i] if column == data then --同列 return false elseif (i + data) == (row + column) then --/斜线 return false elseif (i - data) == (row - column) then --\斜线 return false end end return true end function eight_queen(row) for column = 1,8 do if check(row,column) == true then eightQueen[row] = column if row == 8 then count = count + 1 eightQueen[row] = 0 return end eight_queen(row + 1) eightQueen[row] = 0 end end end eight_queen(1) print(count)
思路照抄百度百科的C++代码 C++代码如下:
#include<iostream> using namespace std; static int gEightQueen[8] = { 0 }, gCount = 0; void print()//输出每一种情况下棋盘中皇后的摆放情况 { for (int outer = 0; outer < 8; outer++) { for (int inner = 0; inner < gEightQueen[outer]; inner++) cout << "#"; for (int inner = gEightQueen[outer] + 1; inner < 8; inner++) cout << ""; cout << endl; } cout << "==========================\n"; } int check_pos_valid(int loop, int value)//检查是否存在有多个皇后在同一行/列/对角线的情况 { int index; int data; for (index = 0; index < loop; index++) { data = gEightQueen[index]; if (value == data) return 0; if ((index + data) == (loop + value)) return 0; if ((index - data) == (loop - value)) return 0; } return 1; } void eight_queen(int index) { int loop; for (loop = 0; loop < 8; loop++) { if (check_pos_valid(index, loop)) { gEightQueen[index] = loop; if (7 == index) { gCount++, print(); gEightQueen[index] = 0; return; } eight_queen(index + 1); gEightQueen[index] = 0; } } } int main(int argc, char*argv[]) { eight_queen(0); cout << "total=" << gCount << endl; return 0; }
输出如下:
原文:http://blog.csdn.net/nxshow/article/details/44096569
内容总结
以上是互联网集市为您收集整理的【算法】用Lua解决八皇后的问题全部内容,希望文章能够帮你解决【算法】用Lua解决八皇后的问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。