题目描述:
LeetCode第1275题 找出井字棋的获胜者
类型简单
思路:
依次把A和B的位置放在容器中
然后编写判断三个点是否在一条直线上的函数
最后当A的棋数大于等于3时,进行直线判断
代码如下:
class Solution {
public:
bool line(vector<vector<int>>A){
int k=A.size()-1;
for(int i=0;i<A.size()-2;i++){
for(int j=i+1;j<A.size()-1;j++){
if((A[j][1]-A[i][1])*(A[k][0]-A[j][0])==(A[k][1]-A[j][1])*(A[j][0]-A[i][0]))
return true;
}
}
return false;
}
string tictactoe(vector<vector<int>>& moves) {
vector<vector<int>>X;
vector<vector<int>>O;
for(int i=0;i<moves.size();i++){
if(i%2==0) X.push_back(moves[i]);
else O.push_back(moves[i]);
if(X.size()>=3&&line(X)==true)
return "A";
else if(O.size()>=3&&line(O)==true)
return "B";
}
if(moves.size()==9)
return "Draw";
return "Pending";
}
};