【刷题随记】八皇后问题(待解决)

输出异常。待检查。

#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<ctype.h>
#include<cstdio>
#include<map>
#include<string>
#include<iostream>
#include<algorithm>
#include<set>
#include<vector>

using namespace std;
int ff;

void zw(vector<vector<int>>& gj,int n,int x,int y)
{
    const int dx[8] = { -1,-1,-1,0,0,1,1,1 };
    const int dy[8] = { -1,0,1,-1,1,-1,0,1 };

    int i;
    int j;
    int xx, yy;
    for (i = 0;i < 8;i++)
    {
        for (j = 1;j < n;j++)
        {
            xx = x + dx[i] * j;
            yy = y + dy[i] * j;
            if((0<=xx&&xx<n)&&(0 <= yy && yy < n))
            gj[xx][yy] = 1;
        }

        
    }
}

void hhfz(vector<vector<int>> &gj,vector<vector<char>> &hh,int n,int k,vector<vector<char>> &result)
{
    if( k == n);
    {
        result = hh;
        ff = ff + 1;
        for (vector<vector<char>>::iterator it = result.begin();it < result.end();it++)
        {
            for (vector<char>::iterator itt = (*it).begin();itt < (*it).end();itt++)
                cout << *itt << ' ';

            cout << endl;
        }
        return;
    }
    


    for (int i = 0;i < n;i++)
    {
        if (gj[k][i] == 0)
        {
            zw(gj, n, k, i);
            vector<vector<int>>temp = gj;
            hh[k][i] = 'Q';
            hhfz(gj, hh, n, k + 1,result);
            gj = temp;
            hh[k][i] = '.';
        }
        
    }

}

int main()
{
    int n;
    vector<vector<int>> gj={};
    vector<vector<char>> hh={};
    vector<vector<char>> result={};

    cin >> n;

    hhfz(gj, hh, n, 0, result);
    return 0;
}
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值