poj-2754-八皇后-C语言-递归求解

本文介绍了一种解决经典的八皇后问题的算法实现。通过使用递归回溯的方法,该程序能够找出所有可能的放置方案,并根据用户输入的指定方案显示棋盘布局。涉及全局变量用于记录已放置的皇后位置及冲突检查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法丑陋,时间略长,还望指教。

#include <stdio.h>
short queenplaces[92][8],col[8],line_135[15],line_45[15],now_place;//全局变量默认为0
void putqueen(int n)//n+1表示处理到哪个皇后了
{
    short i,j;
    if(n==8)
    {
        now_place++;
        return;
    }
    for(i=0;i<8;i++)//i+1表示这一行皇后所在的列数
    {
        if(!col[i]&&!line_135[7-(i-n)]&&!line_45[i+n])
        {
            col[i]=line_135[7-(i-n)]=line_45[i+n]=1;
            for(j=now_place;j<92;j++)
                queenplaces[j][n]=i;
            putqueen(n+1);
            col[i]=line_135[7-(i-n)]=line_45[i+n]=0;
        }
    }
}
int main()
{
    int num,i,j;
    scanf("%d",&num);
    int place[num];
    putqueen(0);
    for(i=0;i<num;i++)
        scanf("%d",&place[i]);
    for(i=0;i<num;i++)
    {
        for(j=0;j<8;j++)
            printf("%d",queenplaces[place[i]-1][j]+1);
        printf("\n");
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值