面试题 16.04. 井字游戏

用循环 暴力即可

class Solution {
public:
string tictactoe(vector<string>& board) {
int n = board.size();
int flag1 = 0, flag2 = 0, flag3 = 1;
for(int i = 0; i < n; i++)
{
char y = board[i][0];
if(y == ' ')
{
flag3 = 0;
continue;
}
int j = 1;
for(; j < n; j++)
{
if(board[i][j] == ' ')
{
flag3 = 0;
break;
}
if(board[i][j] != y)
break;
}
if(j == n)
{
if(y == 'X')
flag1 = 1;
else flag2 = 1;
}
}
for(int j = 0; j < n; j++)
{
char y = board[0][j];
if(y == ' ')
{
flag3 = 0;
continue;
}
int i = 1;
for(; i < n; i++)
{
if(board[i][j] == ' ')
{
flag3 = 0;
break;
}
if(board[i][j] != y)
break;
}
if(i == n)
{
if(y == 'X')
flag1 = 1;
else flag2 = 1;
}
}
char y = board[0][0];
if(y == ' ')
flag3 = 0;
if(y != ' ')
{
int i = 1;
for(; i < n; i++)
{
if(board[i][i] == ' ')
{
flag3 = 0;
break;
}
if(board[i][i] != y)
break;
}
if(i == n)
{
if(y == 'X') flag1 = 1;
else flag2 = 1;
}
}
y = board[0][n - 1];
if(y == ' ')
flag3 = 0;
if(y != ' ')
{
int i = 1;
for(; i < n; i++)
{
if(board[i][n - i - 1] == ' ')
{
flag3 = 0;
break;
}
if(board[i][n - i - 1] != y)
break;
}
if(i == n)
{
if(y == 'X') flag1 = 1;
else flag2 = 1;
}
}
if(flag1 == 1) return "X";
if(flag2 == 1) return "O";
return flag3 == 1 ? "Draw" : "Pending";
}
};

 

自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。

推荐这些文章:

刷题-力扣-面试题 16.04. 井字游戏

题目链接
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/tic-tac-toe-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目描述
设计一个算法,判断玩家是否赢了井字游戏。输入是一个 N x N 的数组棋盘,由字符" ","X"和"O"组成,其中字符" "代表一个空位。
以下是井字游戏的规则:

玩家轮流将字符放入空位(" ")中。
第一个玩家总是放字符"O",且第二个玩家总是放字符"X"。
"X"和"O"只允许放置在空位中,不允许对已放有字符的位置进行填充。
当有N个相同(且非空)的字符填充任何...

leetcode 37. 解数独

用深搜dfs,返回值boolean表示找到了。
class Solution {
public void solveSudoku(char[][] board) {
dfs(board);
}
boolean dfs(char[][] board){
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
char ch=board[i][j];
if(ch!='.') continue;
...

剑值offer12.矩阵中的路径

题面:

 
 样例:

 
题解:暴力搜索,加上相等剪枝。
代码:

class Solution {
public:
int n,m;
int k;
int dx[4]={-1,1,0,0};
int dy[4]={0,0,-1,1};
int vis[205][205];
vector<vector<char>>board;
string word;
bool dfs(int x,int y,int u)
{
if(board[x][y]!=wo...

5、矩阵中的路径

矩阵中的路径:

代码实现
public class Solutionm {
// 矩阵中的路径
public boolean exist(char[][] board, String word) {
char[] charArr = word.toCharArray();
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[0].length; j++) {
if (dfs(board, cha...

C语言:既能求最大公约数又能求最小公倍数的函数

int gygb(int a,int b,int m)
{
int t,c,gy,gb;
if(a>b) t=a,a=b,b=t;
for(c=a;c>=1;c--)
{
if(b%c==0 && a%c==0)

{
if(m==0) return c;
else break;

}
}
if(m==1) return ((a*b)/c);

}
int main()
{
in...

C语言编写的三子棋小游戏

三子棋
描述:将方法函数和main方法分离,并创建game1头文件声明方法
game1.c文件
//三子棋游戏
#include <stdio.h>
#include "game1.h"

//初始化方法
void InitBoard(char board[ROW][COL], int row, int col)
{
int i = 0;
int j = 0;
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
board[i][j] = ' ';
}
}
}
//棋盘布局方法
// ...

【LeetCode】209. 长度最小的子数组

class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int sum[100010]={0};
int n=nums.size();

for(int i=1;i<=n;++i)
{
sum[i]=sum[i-1]+nums[i-1];
}

int ans=100010;
int flag1,flag2=0,flag3=0...

Educational Codeforces Round 64 (Rated for Div. 2)

A

# include <bits/stdc++.h>
using namespace std;

typedef long long LL;
int a[110];
LL sum=0;
int main()
{
int n;
scanf("%d",&n);

for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(int i=1;i<n;i++){
if(a[i-1]==1){
if(a[i]==2){
if((i-2)>=0&&a[i-2]==3){
...

leecode-69. x 的平方根

69. x 的平方根
public int mySqrt(int x) {

if(x == 0) return 0;

if(x <= 3) return 1;

long ans = 1;
long L = 1,R = x;

long M = 0;

while(L <= R){

M = (L + R) / 2;

if(M * M <= x){
ans = M;
...

LeetCode(37)

class Solution {
public:
void solveSudoku(vector<vector<char>>& board) {
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
if(board[i][j]!='.'){
mt[0][i][board[i][j]-'1'] = true;
mt[1][j][board[i][j]-'1...

文章标题:面试题 16.04. 井字游戏
文章链接:https://www.dianjilingqu.com/51104.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>