题目:
Given a 2D board containing 'X'
and 'O'
, capture all regions surrounded by 'X'
.
A region is captured by flipping all 'O'
s into 'X'
s in that surrounded region .
For example,
X X X X X O O X X X O X X O X X
After running your function, the board should be:
X X X X X X X X X X X X X O X X
代码:
import java.awt.*; public class Solution { char[][] board; int r,c; public void solve(char[][] board) { // Start typing your Java solution below // DO NOT write main() function if(board == null || board.length <= 0) return; this.board = board; r = board.length; c = board[0].length; for(int i=0;i<r;i++){ mark(i,0); mark(i,c-1); } for(int i=0;i<c;i++){ mark(0,i); mark(r-1,i); } for(int i=0;i<r;i++){ for(int j=0;j<c;j++){ this.board[i][j] = this.board[i][j] == 'O'?'X':this.board[i][j] == 'A'?'O':'X'; } } } private void mark(int x,int y){ if(x<0 || y<0 || x>=r || y >=c || this.board[x][y] != 'O') return; this.board[x][y] = 'A'; Queue<Point> s = new LinkedList<Point>(); s.add(new Point(x-1,y)); s.add(new Point(x+1,y)); s.add(new Point(x,y-1)); s.add(new Point(x,y+1)); while(!s.isEmpty()){ Point p = s.poll(); x = p.x; y = p.y; if(x<0 || y<0 || x>=r || y >=c || this.board[x][y] != 'O'){ continue; } this.board[x][y] = 'A'; s.add(new Point(x-1,y)); s.add(new Point(x+1,y)); s.add(new Point(x,y-1)); s.add(new Point(x,y+1)); } } }
相关推荐
搜索算法解决计算机围棋的吃子问题.pdf
基于socket的在线围棋对战游戏,实现吃子,打劫,判定输赢等基础规则,实现悔棋、跳过、认输等基本操作
Java Applet 围棋源程序 使用最简单的思想解决围棋吃子问题. 作者保留所有权利,禁止转载!
使用 Alpha-Beta搜索和 proof-number ( pn)搜索解决计算机围棋的吃子问题。对吃子问题形式化并给出了简 单有效的评估函数。 Alpha-Beta搜索使用了包括置换表在内的各种扩展技术。 pn搜索使用了包括df-pn在内的4 种变...
2、优化了人工智能两步吃子和三步吃子算法的设计,使之能根据吃子数目多少选择落子点。 2009-4-7 围棋学习1.15版相对于1.14版更新说明: 1、改进了打开文件和保存文件时的初始目录和文件命名操作,使之更智能化...
包含围棋的基本步骤, 吃子、打劫、上一步下一步。 可以用于布局死活的研究。
绘制棋盘,鼠标控制下棋,并且实现吃子功能
java 围棋 代码 哦!下来看看哟
于是这两天就先研究了一下单机版的围棋功能,主要是涉及到围棋对弈中的一些核心算法,比如吃子、打劫、悔棋、数目等。 经过一些探索与测试,这些算法也相继得到了实现,于是就形成了现在的单机版,除了对弈功能,还...
面向对象程序设计(围棋-数气禁手吃子).ppt
2、修正了基础智能类三步包吃和三步吃子算法中第2步可能不入子的疏忽。 2010-11-14 围棋学习2.38版相对于2.36版更新说明: 1、修正了基础智能类眼形算法对2路眼位的对角1路空点的忽略,并优化了一路眼位的成眼...
java实现的围棋基本算法,实现围棋的基础功能,落子,切换棋手,吃子
功能主要有: <br>* 个人自己下围棋 (意即人和人下围棋) * 落子, 吃子, 及时间的纪录 * 自动判断吃子, 打劫, 非法落子, 等等 * 无限步的悔棋功能 * (New!) 棋末记地(算目) (采用日式规则, 是...
知道棋盘的基础知识:是方的有横竖各 19 道线, 361 个点。认得星和天元。...知道围棋术语六个:气,连,断,打吃,长,提。 记住:没有气的棋子一定要马上从棋盘上拿下来,注意克服不拿死子的习惯。
本软件适用于幼儿园围棋课使用!围棋入门课程~气 吃子技巧等
实现围棋的初步功能,能走棋,能提死子,不入气禁着点提醒,打劫等。尚未加入人工智能下棋的算法。可以对弈等。
学校课程设计想搞个围棋的,搜了很久,最后决定用这个,是由五子棋的代码改了一下,加入了搜集的吃子代码,本想通过数子的方式使其具有判断输赢的功能,但是还是失败了,不过此程序能基本实现围棋的落子吃子功能,能...
创意围棋系列更新,增加10个地图,...游戏玩法:玩家与ai各执一色棋子,玩家需要用四颗棋子在对方棋子的正上下左右方向站位且没有缺失一方,可吃ai一子,注意你的任务是想办法吃掉对方颜色不同的那颗棋子,然后过关!
支持吃子,悔棋,前进,实现人人对战。 使用了swing框架
PS:功能介绍 游戏操作:左击下子,右击悔棋,双击吃子(本程序还无程序判断能力) 输入:输入选手名,然后点击“input”即可开始游戏,点击“Start”从新开始。