C语言实现八皇后问题(回溯算法)
心血来潮。,用C写下大学入门C语言时的经典算法。
八皇后问题:在8*8格子里放八个皇后(棋子),使其不能互相攻击(八个棋子不能在同一行,同一列,或者同一斜线)
核心思想:走不通,回头 。
实现:递归,回溯
代码实现如下:
// //main.c //queen // //Created by 南瓜不说话 on 2017/9/19. //Copyright ? 2017年 南瓜不说话. All rights reserved. //#include #include #include int n; int arr[8]; int x[8]; int sum; int attack(int k) { for(int j=1; jn){ for(int i=1; i<=n; i++) printf(" %d",arr[i]); printf("\n"); sum++; }else{ for(int i=1; i<=n; i++ ){ arr[k]=i; if(attack(k)){ backStart(k+1); } } } }int main(int argc, const char * argv[]) { n=8; //arr; sum=0; backStart(1); printf("sum=%d\n",sum); return 0; }
问题:在windows下编译结果是正确的,在mac下,必须写zx()函数才编译正确,可能是我mac下C的库有问题,有待验证。。
【C语言实现八皇后问题(回溯算法)】转载于:https://www.cnblogs.com/nanguabushuohua/p/7561294.html
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 【生信技能树】R语言练习题|【生信技能树】R语言练习题 - 中级
- 八、「料理风云」
- 孩子不是实现父母欲望的工具——林哈夫
- 一起来学习C语言的字符串转换函数
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- opencv|opencv C++模板匹配的简单实现
- C语言浮点函数中的modf和fmod详解