QBASIC 非递归法解八皇后问题

CLS
DIM queen(1 TO 8) AS INTEGER
COUNTER = 0
row = 1
queen(row) = 0
DO
  IF row = 0 THEN EXIT DO
  queen(row) = queen(row) + 1
  IF queen(row) = 9 THEN
    row(row) = 0
    row = row - 1
  ELSE
    FOR i = 1 TO row - 1
      IF ABS(row - i) = ABS(queen(i) - queen(row)) OR queen(i) = queen(row) THEN EXIT FOR
    NEXT
    IF i = row THEN  '第ROW行可放在queen(row)列
      IF row = 8 THEN
        COUNTER = COUNTER + 1
        PRINT "== " + LTRIM$(STR$(COUNTER)) + " =="
        FOR M = 1 TO 8
        FOR N = 1 TO 8
            IF queen(M) = N THEN PRINT "#";  ELSE PRINT "*";
        NEXT
        PRINT
        NEXT
      ELSE
        row = row + 1
        queen(row) = 0
      END IF
    END IF
  END IF
LOOP
END


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值