zoukankan      html  css  js  c++  java
  • 数据结构与算法之皇后问题

    解法1 python解决n皇后问题

    import itertools as it
    n = 6
    blank = n*n
    chest = [[0]*n for i in range(n)]
    comb = it.combinations(list(range(blank)),n)
    
    def check(x,y):
            if max(chest[x]) == 1:
                    return False
            if max([chest[i][y] for i in range(n)]) == 1:
                    return False
            for i in range(n):
                    for j in range(n):
                            if i+j == x+y or i-j == x-y:
                                    if chest[i][j] == 1:
                                            return False
            return True
    
    queen = 0
    c = 0
    for each in comb:
            for e in each:
                    x = e//n
                    y = e%n
                    if check(x,y):
                            chest[x][y] = 1
                            queen += 1
                    else:
                            chest = [[0]*n for i in range(n)]
                            queen = 0
                            break
            if queen == n:
                    c += 1
                    print ('Solution %d:' % c)
                    for q in chest:
                            print (q)
                    print ('*'*20)
                    chest = [[0]*n for i in range(n)]
                    queen = 0
    

    解法2 C语言爆破八皇后

    #include<stdio.h>
    int Queen()
    {
     int count = 0;
     for(int q1=0;q1<8;q1++)
     {
      for(int q2=0;q2<8;q2++)
      {
       if(q1==q2 || q1+1==q2 || q1-1==q2)
       {
        continue;
       }
       for(int q3=0;q3<8;q3++)
       {
        if(q1==q3 || q1+2==q3 || q1-2==q3 ||
           q2==q3 || q2+1==q3 || q2-1==q3)
        {
         continue;
        }
        for(int q4=0;q4<8;q4++)
        {
         if(q1==q4 || q1+3==q4 || q1-3==q4 ||
            q2==q4 || q2+2==q4 || q2-2==q4 ||
            q3==q4 || q3+1==q4 || q3-1==q4)
         {
          continue;
         }
        	for(int q5=0;q5<8;q5++)
         {
          if(q1==q5 || q1+4==q5 || q1-4==q5 ||
             q2==q5 || q2+3==q5 || q2-3==q5 ||
             q3==q5 || q3+2==q5 || q3-2==q5 ||
             q4==q5 || q4+1==q5 || q4-1==q5)
          {
           continue;
          }
          for(int q6=0;q6<8;q6++)
          {
           if(q1==q6 || q1+5==q6 || q1-5==q6 ||
              q2==q6 || q2+4==q6 || q2-4==q6 ||
              q3==q6 || q3+3==q6 || q3-3==q6 ||
              q4==q6 || q4+2==q6 || q4-2==q6 ||
              q5==q6 || q5+1==q6 || q5-1==q6)
           {
            continue;
           }
           for(int q7=0;q7<8;q7++)
           {
            if(q1==q7 || q1+6==q7 || q1-6==q7 ||
               q2==q7 || q2+5==q7 || q2-5==q7 ||
               q3==q7 || q3+4==q7 || q3-4==q7 ||
               q4==q7 || q4+3==q7 || q4-3==q7 ||
               q5==q7 || q5+2==q7 || q5-2==q7 ||
               q6==q7 || q6+1==q7 || q6-1==q7)
            {
             continue;
            }
            for(int q8=0;q8<8;q8++)
            {
             if(q1==q8 || q1+7==q8 || q1-7==q8 ||
                q2==q8 || q2+6==q8 || q2-6==q8 ||
                q3==q8 || q3+5==q8 || q3-5==q8 ||
                q4==q8 || q4+4==q8 || q4-4==q8 ||
                q5==q8 || q5+3==q8 || q5-3==q8 ||
                q6==q8 || q6+2==q8 || q6-2==q8 ||
                q7==q8 || q7+1==q8 || q7-1==q8 )
             {
              continue;
             }
             
             printf("%d %d %d %d %d %d %d %d
    ",q1,q2,q3,q4,q5,q6,q7,q8);
             count++;
            }
           }
          }
         }
        }
       }
      }
     }
     printf("%d
    ",count);
    }
    int main()
    {
    Queen();
     return 0;
    }
    

    八重循环,就问还有比我复杂度更高的吗???

  • 相关阅读:
    团队冲刺第九天
    团队冲刺第七天
    CSS 居中大全
    jquery 中fadeIn,fadeOut动画
    使用Fiddler提高前端工作效率 (实例篇)
    使用Fiddler提高前端工作效率 (介绍篇)
    python的一些学习资料(持续更新中)
    Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level
    setuptools,pip,install,UnicodeDecodeError: 'ascii' codec can't decode byte.原因和解决方案
    express cookie-session解惑
  • 原文地址:https://www.cnblogs.com/AmosAlbert/p/12832383.html
Copyright © 2011-2022 走看看