以下是一个简单的C++程序,用于计算并输出两位玩家在五子棋棋盘上分别形成的连活三的数量:
#include <iostream>
#include <string>
using namespace std;
int count_live_three(string board, char player) {
int count = 0;
int row_num = 15;
int col_num = 15;
for (int i = 0; i < row_num; i++) {
for (int j = 0; j < col_num; j++) {
if (board[i * col_num + j] == '0') {
continue;
}
if (player == '1') {
if ((i >= 2 && board[i * col_num + j] == '1' && (board[(i - 2) * col_num + j] == '0' || board[(i + 2) * col_num + j] == '0')) ||
(j >= 2 && board[i * col_num + j] == '1' && (board[i * col_num + j - 2] == '0' || board[i * col_num + j + 2] == '0'))) {
count++;
}
} else if (player == '2') {
if ((i >= 2 && board[i * col_num + j] == '2' && (board[(i - 2) * col_num + j] == '0' || board[(i + 2) * col_num + j] == '0')) ||
(j >= 2 && board[i * col_num + j] == '2' && (board[i * col_num + j - 2] == '0' || board[i * col_num + j + 2] == '0'))) {
count++;
}
}
}
}
return count;
}
int main() {
string board;
char p1, p2;
cout << "请输入五子棋棋盘(15行15列):" << endl;
getline(cin,棋盘);
cout << "请输入玩家1和玩家2的标记(1或2):" << endl;
cin >> p1 >> p2;
int count1 = count_live_three(borad,p1);
int count2 = count_live_three(board,p2);
cout << p1 << "形成了" << count1 << "个连活三。" << endl;
cout << p2 << "形成了" << count2 << "个连活三。" << endl;
return 0;
}
1.定义了一个名为count_live_three的函数,函数接受一个字符串参数棋盘和一个字符参数玩家,用于计算指定玩家在给定棋盘上形成的连活三的数量。该函数遍历整个棋盘,对于每个非空棋子,检查其是否形成了连活三,如果是,则将计数器加一。最后返回计数器的值。
2.在主函数中,程序首先从标准输入读取五子棋棋盘和两位玩家的标记。然后调用count_live_three函数分别计算两位玩家形成的连活三的数量,并将结果输出到标准输出。