zoukankan      html  css  js  c++  java
  • pat每日刷题计划--day66

    递归回溯八皇后复习

    注意反向斜线不能使用abs,1和-1对应的是不一样的线

    具体操作

    • 找边界,在边界停止回溯
    • 在判断可以走这一步后完成这一步标记,并进入下一循环
    • 下一循环结束以后(即函数表达式后面),把前面标记的东西改回来
    #include<stdio.h>
    #include<iostream>
    #include<math.h>
    #include<algorithm>
    #include<string.h>
    using namespace std;
    int n;
    int ans[100];
    bool hashTable[100];
    bool a[100];
    bool b[100];
    int countnum=0;
    void bhh(int num)
    {
        for(int x=1;x<=n;x++)
        if(hashTable[x]==false && a[x+num]==false && b[x-num+10]==false)
        {
            if(num==n)
            {
                countnum++;
                if(countnum<=3)
                {
                for(int i=1;i<=n-1;i++)
                {
                    printf("%d ",ans[i]);
                }
                printf("%d
    ",x);
                }
                return;
            }
            hashTable[x]=true;
            a[x+num]=true;
            b[x-num+10]=true;
            ans[num]=x;
            //cout<<"this part"<<endl;
            bhh(num+1);
            hashTable[x]=false;
            a[x+num]=false;
            b[x-num+10]=false;
        }
    }
    int main()
    {
        scanf("%d",&n);
        memset(hashTable,0,sizeof(hashTable));
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        bhh(1);
        printf("%d
    ",countnum);
        return 0;
    }
    View Code
    时间才能证明一切,选好了就尽力去做吧!
  • 相关阅读:
    java基础多线程
    java反射基础
    JSP-4(Session)
    JSP-3
    JSP-2
    复试计算机专业文献翻译
    jsp
    实现输入输出对应模型
    servlet
    tomcat的入门(1)
  • 原文地址:https://www.cnblogs.com/tingxilin/p/12212810.html
Copyright © 2011-2022 走看看