zoukankan      html  css  js  c++  java
  • PAT甲题题解-1128. N Queens Puzzle (20)-做了一个假的n皇后问题

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~
    http://www.cnblogs.com/chenxiwenruo/p/6789810.html
    特别不喜欢那些随便转载别人的原创文章又不给出链接的
    所以不准偷偷复制博主的博客噢~~

    一开始以为是八皇后问题,这不就需要状态压缩dp嘛,PAT没想到竟然还会考这个
    往后看才发现,原来只是判断是否是八皇后问题的一个解而已。

    很明显,八皇后的一个解,每条行、列、对角线最多有1个皇后
    所以for一遍的时候,相应行、列、对角线的个数++,如果有大于1的,那肯定就不是了。

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    
    using namespace std;
    const int maxn=1000+5;
    int row[maxn];
    int col[maxn];
    int diagonal[maxn*2]; //diagonal[i]表示第i条对角线上是否有queen
    int n;
    int main()
    {
        int t;
        scanf("%d",&t);
        for(int i=0;i<t;i++){
            scanf("%d",&n);
            memset(row,0,sizeof(row));
            memset(col,0,sizeof(col));
            memset(diagonal,0,sizeof(diagonal));
            int r,c;
            bool flag=true;
            for(c=1;c<=n;c++){
                scanf("%d",&r);
                r=n-r+1;
                row[r]++;
                col[c]++;
                diagonal[r+c-1]++;
                if(row[r]>1)
                    flag=false;
                if(col[r]>1)
                    flag=false;
                if(diagonal[r+c-1]>1)
                    flag=false;
            }
            if(flag)
                printf("YES
    ");
            else
                printf("NO
    ");
        }
        return 0;
    }
    View Code
  • 相关阅读:
    数据结构-图
    web.xml的运行顺序
    如何把自己打造成技术圈的 papi 酱
    也谈http中get和post
    手机充电速度及电池使用
    web项目Log4j日志输出路径配置问题
    JAVA模块化
    关于web安全
    Struts2中通配符
    2016第14周一
  • 原文地址:https://www.cnblogs.com/chenxiwenruo/p/6789810.html
Copyright © 2011-2022 走看看