zoukankan      html  css  js  c++  java
  • n皇后

    104.N皇后 (15分)
    C时间限制:1 毫秒 | C内存限制:3000 Kb
    题目内容:
    国际象棋中的皇后可以沿着水平线,垂直线,或者斜线前进,吃掉遇到的所有棋子,如果棋盘上有八个皇后,则这八个皇后如何相安无事的
    放置在棋盘上,1970年与1971年, E.W.Dijkstra与N.Wirth曾经用这个问题来讲解程式设计之技巧。
    该题要求N皇后的放置结果共有多少种
    输入描述
    输入一个正整数N(N小于16)

    输出描述
    输出结果

    输入样例
    8

    输出样例
    92

    #include <stdio.h>
    #include <string.h>
    int c[20];//用来记录 a[i] = j 表示第i个皇后放在了 第 j 列
    int count, n;
    void search(int pos){
        if(pos == n+1){
            count++;
            return ;
        }
        //看放在第几列
        for(int i = 1; i <= n; i++){
            c[pos] = i;  //把第 pos 个皇后放在了第 i 列 
            //看看和前面的皇后是否有冲突
            bool flag = true;
            for(int j = 1; j < pos; j++){
                if(c[pos]==c[j] || pos-j==c[pos]-c[j] || pos-j == c[j]-c[pos]){
                    flag = false;
                    break;
                }
            } 
            if(flag) search(pos+1);
        } 
    } 
    int main(){
        memset(c, 0, sizeof c);
        count = 0;
        scanf("%d", &n);
        search(1);  //从第 1 行开始放第一个皇后 
        printf("%d
    ", count);
        return 0;
    }
  • 相关阅读:
    LinuxDay10——文本处理工具sed
    设计模式原则----开放封闭原则
    模式设计原则----单一职责原则
    策略模式
    建模工具
    vs查看源码行数
    单例模式(Singleton Pattern)
    UML
    简单工厂模式(Simple Factory Pattern)
    winform ProgressBar
  • 原文地址:https://www.cnblogs.com/DDiamondd/p/10744256.html
Copyright © 2011-2022 走看看