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

    推荐阅读