八皇后问题

一叶枫叶红了

一叶枫叶红了

2016-02-19 12:40

图老师设计创意栏目是一个分享最好最实用的教程的社区,我们拥有最用心的各种教程,今天就给大家分享八皇后问题的教程,热爱PS的朋友们快点看过来吧!
/*八皇后问题可以有多种解法,我通过找寻棋盘上各个棋子之间的斜率来解决,想与大家共同探讨   -----SET*//*在TC上,调试通过*/#includemath.h
  int check(int c[])   /*判定棋盘上八位数列是否符合斜率不为+1、-1、或0,且每位数字从1到8各出现一次,若符合返回1,否则为0*/
    {int n,m;
     for (n=0;n7;n++)
       for (m=n+1;m8;m++)     
         if (c[m]1c[m]8c[n]==c[m]abs(c[n]-c[m])==abs(n-m))
            return(0);
     return(1);
    }
  main()
    {int qp[8]={8,7,6,5,4,3,2,1},*p;  /*qp[8]代表棋盘上八行,八个皇后在棋盘上一定是每行一个*/
        /*八个皇后在棋盘上的横坐标一定各不相同,即1---8各出现一次*/   /*由于数12345678可被九整除,于是用穷举法找出所有能被九整除的八位数,*/   /*其中必包含1---8在八位中所有的排列组合*/   /*检测这些数列就能找出八皇后的所有可能*/   for (p=qp;qp[7]9;qp[0]+=9)
       {for (p=qp;p&qp[7];)    /*对12345678每次加9,直加到87654321*/
          {if (*p9)
             {*(p+1)+=1;
              *p-=10;
              p++;
             }
           else
           p+=8;
          }
        if (check(qp))      /*检测八位数列,返回值为真则在屏幕上输出*/
          {for (p=qp;p=&qp[7];p++) printf ("%d",*p);
           printf ("  ");
    }  }  }
展开更多 50%)
分享

猜你喜欢

八皇后问题

编程语言 网络编程
八皇后问题

八皇后问题求解

编程语言 网络编程
八皇后问题求解

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

java N皇后实现问题解析

编程语言 网络编程
java N皇后实现问题解析

银皇后是什么?银皇后的养护技巧

银皇后 盆栽
银皇后是什么?银皇后的养护技巧

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

果中皇后给你皇后般的滋养

山竹怎么吃 营养价值
果中皇后给你皇后般的滋养

新西兰皇后镇好玩吗 皇后镇有哪些旅游特色

新西兰 旅游
新西兰皇后镇好玩吗 皇后镇有哪些旅游特色

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

光圈与景深的碰撞

光圈与景深的碰撞

win10系统如何共享文件夹

win10系统如何共享文件夹
下拉加载更多内容 ↓