zoukankan      html  css  js  c++  java
  • 八皇后问题一维数组解法

    #include <iostream>
    #include <math.h>
    #include <malloc.h>

    using namespace std;

    int *position; //放置的位置
    int queen; //皇后数目
    int count; //第N种可能性

    //判断第n行是否放置皇后
    bool SignPoint(int n)
    {
    for (int i=0;i<n;i++)
    {
    if (position[i] == position[n]) //该列已经放置过皇后了
    return false;
    if (abs(position[i] - position[n]) == n-i) //对角线已经放置过了
    return false;
    }
    return true;
    }

    //设置皇后
    void SetQueen(int n=0)
    {
    if (queen==n)
    {
    //该处可以改成自己想要的显示方式
    printf("NO.%d: ",++count);
    printf("\n");
    for (int i=0;i<queen;i++)
    {
    for (int j=0;j<queen;j++)
    {
    if (j == position[i])
    {
    printf("* ");
    }
    else
    {
    printf("0 ");
    }
    }
    printf("\n");
    }
    printf("\n");
    return;
    }
    else
    {
    for (int i=0;i<queen;i++)
    {
    position[n] = i;

    if(SignPoint(n))//如果该位置放置皇后正确的话,则到下一行
    {
    SetQueen(n+1);
    }
    }
    }
    }

    int main(int argc, char argv[])
    {
    cout<<"请输入皇后的总数:"<<endl;
    cin>>queen;
    position = (int*)malloc(queen*sizeof(int));
    SetQueen();
    cout<<"摆放完毕"<<endl;
    cin.get();
    cin.get();
    return 0;
    }
  • 相关阅读:
    docker运行爬虫代码
    python语法之流程控制(if while for)
    python基本数据类型
    python基本运算符
    python用户交互与格式化输出
    jieba模块基本介绍
    wordcloud库基本介绍
    计算机基础之编程语言
    计算机基础
    python入门之流程控制
  • 原文地址:https://www.cnblogs.com/wonderKK/p/2420090.html
Copyright © 2011-2022 走看看