QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2666|回复: 11

用bash完成八皇后問題(ZT)

[复制链接]
发表于 2003-9-8 11:45:50 | 显示全部楼层 |阅读模式
[code:1]#/bin/bash
canSet() {                                  # 檢查是否可放下皇后的子程序.
        for ((n=0;n<y;n++)) ;do               
                ((P[$n] == x)) && return 1    # 檢查是否同一行, 如果是返回1 false
                ((P[$n] == x - n + y )) && return 1 #檢查斜行.
                ((P[$n] == x + n - y )) && return 1 #檢查另一方向斜行.
        done
        return 0  # 返回成功.
}
# init
y=0   # y 是行,
for((i=0;i<8;i++)) ;do
        P[$i]=-1      # p 是座位array , -1是不在棋盤上.
done

while (((y<8)&&(y>=0)));do   #如果y>=8, 即找到結果, 如果y<0, 即找不到結果, 退出迴圈
#       echo ${P[*]};    # 打開這一注解,可看script 運行過程
        f=0            # 設flag = 0, 用它檢查否一整能不能放下皇后
        s=${P[$y]}+1     # 每一行皇后放下的列位罝+1
        for ((x=s;x<8;x++)); do   #其他shell 用 for x in seq $s 7
                if canSet ;then   #如果可放下, 則
                        P[$y]=$x  #記下皇后位罝
                        ((y++))    # 行位罝加1, 如用其他shell, 用 y=`expr $y + 1`代替
                        f=1     #設flag=1,即可效皇后.
                        break    #處理下一個皇后
                fi
        done
        if [ $f -eq 0 ];then  #  如果整行都不能放下皇后.則
                P[$y]=-1   #將皇后由棋盤上拿下.
                ((y--))     #行位罝-1.
        fi
done
echo ${P[*]}; 打印數據[/code:1]
发表于 2003-9-9 13:18:04 | 显示全部楼层
什么是八皇后问题?
回复

使用道具 举报

发表于 2003-9-9 23:28:56 | 显示全部楼层
把chg1226拖出去打! 居然问这种弱智问题!   

HOUSCOUS, 这个可是一个好东西!
回复

使用道具 举报

发表于 2003-9-10 10:44:54 | 显示全部楼层
难道不知道还不让问了吗
回复

使用道具 举报

发表于 2003-9-10 15:46:47 | 显示全部楼层
8皇后问题????????
回复

使用道具 举报

发表于 2003-9-10 16:11:32 | 显示全部楼层
皇后有8个
回复

使用道具 举报

发表于 2003-9-10 16:38:21 | 显示全部楼层
佩服 佩服
回复

使用道具 举报

发表于 2003-9-11 07:26:16 | 显示全部楼层
就是求在国际象棋盘上面放8个皇后,使它们之间都不被吃掉的摆法。国际象棋中皇后拥有八个方向的行走权,是最强的棋。  
回复

使用道具 举报

 楼主| 发表于 2003-9-16 05:24:15 | 显示全部楼层
chg1226, 在这里:

http://www.linlins.com/linlin3/q8.htm
回复

使用道具 举报

发表于 2003-9-16 11:59:13 | 显示全部楼层
answer:

0 4 7 5 2 6 1 3
回复

使用道具 举报

发表于 2003-10-23 06:55:11 | 显示全部楼层
[quote:8321979696="chg1226"]什么是八皇后问题? [/quote]
hahahahahaahahhahahaha!
回复

使用道具 举报

发表于 2004-5-21 05:33:38 | 显示全部楼层
哈,见识过了。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-5-3 16:55 , Processed in 0.075337 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表