<?php 
//五子棋求是否有赢的一方,在一个30的棋盘内下棋。白子为1,黑子为0.白子获胜返回1,黑子获胜返回-1.没有获胜返回0.

//$xindex 为某个旗子的x位置,yIndex为y的位置
function gobng_win($xIndex,$yIndex){
    $max=0;
    $X = $xIndex;
    $Y = $yIndex;
    $dir = [   //将一个子附近所有相邻的位置都定义出来
    [[-1,0],[1,0]],//左,右
    [[0,-1],[0,1]],//下,上
    [[1,1],[-1,-1]],//右上,左下
    [[1,-1],[-1,1]]//右下,左上
    ];
    
    for($i=0;$<4;$i++){
        $count = 1;
        for($j=0;$j<2;+j++){
            $flag=true;//定义当在循环中未达到五个子一起就改变成false 抛出,并停止循环
             /**
                 while语句中为一直向某一个方向遍历
                 有相同颜色的棋子的时候,Count++
                 否则置flag为false,结束该该方向的遍历
                 **/
            while($flag){
                $X = $X+$dir[$i][$j][0];
                $Y = $Y +$dir[$i][$j][1];
                
                if($X>=0&&$X<=30&&$Y>=0&&$Y<=30){
                    if($a[$X][$Y]==$a[$xIndex][$yIndex]){
                            $count++;
                    }else{
                        $flag = false;
                    }
                }else{
                        $flag = false;
                    }
                }
                $X = $xIndex;
                $Y = $yIndex;
            }
            if($count>=5){
                $max = 1;
                break;
            }else{
                $max = 0;
            }
            if($max==1){
                if($a[$xIndex][$yIndex]==1){
                    return 1;//白子获胜
                }else{
                    return -1;//黑子获胜
                }
            }else{
                return 0;//没有获胜方
            }  
        }
    }   
}

?>

算法:求五子棋盘是否有获胜方相关推荐

  1. Matlab实现连通域标记算法求图像连通域

    Matlab实现连通域标记算法求图像连通域 连通域 连通域标记算法 连通域 连通区域(Connected Component)一般是指图像中具有相同像素值且位置相邻的前景像素点组成的图像区域(Regi ...

  2. C++迪杰斯特拉算法求最短路径

    一:算法历史 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题.迪杰斯特拉算法主要特点是以 ...

  3. python最小生成树算法_图算法|Prim算法求最小生成树

    01 - 一个实际问题 要在n个城市之间铺设光缆,要求有2个: 这 n 个城市的任意两个之间都可以通信: 铺设光缆的费用很高,且各个城市之间铺设光缆的费用不同,因此要使铺设光缆的总费用最低. 如下所示 ...

  4. _DataStructure_C_Impl:Dijkstra算法求最短路径

    // _DataStructure_C_Impl:Dijkstra #include<stdio.h> #include<stdlib.h> #include<strin ...

  5. poj 3565 uva 1411 Ants KM算法求最小权

    由于涉及到实数,一定,一定不能直接等于,一定,一定加一个误差<0.00001,坑死了-- 有两种事物,不难想到用二分图.这里涉及到一个有趣的问题,这个二分图的完美匹配的最小权值和就是答案.为啥呢 ...

  6. 黄金分割算法求函数的极值C++实现

    黄金分割算法求极值迭代的最终判断是两次函数值的结果差是否很小,如果小,则说明该处函数的斜率很小,就是一个极值点. 过程如下: 以下是代码: //黄金分割法! /* ================== ...

  7. PHP多选题怎么弄,php多选题评分算法求指导解决方法

    php 多选题评分算法 求指导 多选题一题3分 原则是:少选给2分,多选不给分,选错不给分 假如:正确答案123 提交答案 123 得3分 提交答案 12,13,23,都可得2分 提交答案 1234, ...

  8. 算法提高课-图论-有向图的强连通分量-AcWing 1174. 受欢迎的牛:tarjan算法求强连通分量、tarjan算法板子、强连通图

    文章目录 题目解答 题目来源 题目解答 来源:acwing 分析: 强连通图:给定一张有向图.若对于图中任意两个结点x,y,既存在从x到y的路径,也存在从y到x的路径,则称该有向图是"强连通 ...

  9. CSP认证201412-4 最优灌溉[C++题解]:最小生成树裸题、Kruskal算法求最小生成树

    题目分析 来源:acwing 分析:这是一道最小生成树的裸题. 这里默写Kruskal求最小生成树的最小费用的模板. 最小生成树模板请参考笔者的另一篇博文: 最小生成树板子-AcWing 859. K ...

最新文章

  1. jsp中 input placeholder_前端工作中的方法总结
  2. windows安装MongoDB进度条卡住,window安装mongo系统错误 2,系统错误5的解决办法(转载)...
  3. 计算机会考操作题vb,2016年9月计算机二级考试《VB》上机操作题题库(2)
  4. mysql创建模型_连接mysql数据库,创建用户模型
  5. AC自动机——多个kmp匹配
  6. python123第四周作业_科学计算和可视化
  7. (附源码)RN Demo
  8. 幼儿园数学目标_幼儿园数学教育的总目标包括哪些
  9. CH340G设计pcb注意事项
  10. silverlight mysql_Silverlight中衔接MySQL数据库实例详解
  11. 一道好玩的逻辑题之蓝眼睛红眼睛
  12. 简单的neo4j三元组增量插入-通过py2neo实现
  13. Linux 监控文件变化
  14. majaro kde 搜狗五笔拼音 无法输入顿号
  15. keil5如何兼容MDK 和 STC51
  16. CAD密技巧之如何将world文档快速插入CAD图纸
  17. 海康 网络摄像头 多摄像头数据传输及流解码
  18. 游戏项目的技术开发成本
  19. 简体中文转换繁体中文
  20. 流水号函数rowNoInGroup()与groupMaxNumber()区别

热门文章

  1. 基于机器学习的工控安全风险评估
  2. 哪些行业适用到分账系统?
  3. 简单有创意的思维导图要怎样绘制
  4. android 大富翁,安卓玩大富翁2和大富翁3
  5. 华为MDC通过网卡转发接入外网
  6. 平方串(2018爱奇艺校招)
  7. Python学习之【字典】
  8. 【jQuery教科书】从jQuery语法到jQuery ajax的每一个知识点(学习总结)
  9. jzoj3058. 【NOIP2012模拟10.26】火炬手
  10. vue3 ref及reactive响应式原理案例 语法糖/非语法糖