单纯的暴力写法,不含任何搜索算法。。。

#include<iostream>
#include<algorithm>
#include<stdlib.h>
#include<graphics.h>
char c[20][20];
int X1, Y1, X2, Y2;
using namespace std;
void print()
{
	system("cls");
	printf("  ");
	for (int i = 1; i <= 15; i++) {
		if (i == 1)printf(" ");
		if (i <= 9)
			printf("%d  ", i);
		else
			printf("%d ", i);
	}
	printf("\n");
	for (int i = 1; i <= 15; i++) {
		if (i <= 9)
			printf("%d  ", i);
		else
			printf("%d ", i);
		for (int j = 1; j <= 15; j++) {
			printf("%c  ", c[i][j]);
		}
		printf("\n");
	}
	printf("人先手,电脑后手\n");
	printf("请输入棋子的坐标:");
}
void init()
{
	memset(c, 'o', sizeof(c));
	for (int i = 0; i <= 9; i++)
		c[0][i] = c[i][0] = 'z';
}
bool people(int x, int y)
{
	if (c[x][y] == 'o') {
		c[x][y] = 'w';
		print();
		return true;
	}
	else {
		printf("该点处有子存在,请重新输入\n");
		return false;
	}
}
bool check2(int x, int y) {
	int flag = -1;
	for (int i = y - 4; i <= y; ++i) {//检查5个子连在一起的情况
		if (c[x][i] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = y - 3; i <= y + 1; ++i) {//检查5个子连在一起的情况
		if (c[x][i] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = y - 2; i <= y + 2; ++i) {//检查5个子连在一起的情况
		if (c[x][i] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = y - 1; i <= y + 3; ++i) {//检查5个子连在一起的情况
		if (c[x][i] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = y; i <= y + 4; ++i) {//检查5个子连在一起的情况
		if (c[x][i] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;

	for (int i = x - 4; i <= x; ++i) {//检查5个子连在一起的情况
		if (c[i][y] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 3; i <= x + 1; ++i) {//检查5个子连在一起的情况
		if (c[i][y] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 2; i <= x + 2; ++i) {//检查5个子连在一起的情况
		if (c[i][y] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 1; i <= x + 3; ++i) {//检查5个子连在一起的情况
		if (c[i][y] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x; i <= x + 4; ++i) {//检查5个子连在一起的情况
		if (c[i][y] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;

	for (int i = x - 4, j = y - 4; i <= x, j <= y; ++i, ++j) {
		if (c[i][j] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 3, j = y - 3; i <= x + 1, j <= y + 1; ++i, ++j) {
		if (c[i][j] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 2, j = y - 2; i <= x + 2, j <= y + 2; ++i, ++j) {
		if (c[i][j] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 1, j = y - 1; i <= x + 3, j <= y + 3; ++i, ++j) {
		if (c[i][j] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x, j = y; i <= x + 4, j <= y + 4; ++i, ++j) {
		if (c[i][j] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 2, j = y + 2; i <= x + 2, j >= y - 2; ++i, --j) {
		if (c[i][j] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 4, j = y + 4; i <= x, j >= y; ++i, --j) {
		if (c[i][j] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 3, j = y + 3; i <= x + 1, j >= y - 1; ++i, --j) {
		if (c[i][j] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 2, j = y + 2; i <= x + 2, j >= y - 2; ++i, --j) {
		if (c[i][j] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 1, j = y + 1; i <= x + 3, j >= y - 3; ++i, --j) {
		if (c[i][j] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x, j = y; i <= x + 4, j >= y - 4; ++i, --j) {
		if (c[i][j] == 'b')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	else return false;
}
bool computer(int x1, int y1, int x2, int y2) {
	bool ret = false;
	if (c[x1][y1] == 'o') {
		c[x1][y1] = 'b';
		ret = check2(x1, y1);
	}
	else if (c[x2][y2] == 'o') {
		c[x2][y2] = 'b';
		ret = check2(x2, y2);
	}
	return ret;
}
bool check(int x, int y) {
	int flag = -1;
	for (int i = y - 4; i <= y; ++i) {//检查5个子连在一起的情况
		if (c[x][i] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = y - 3; i <= y + 1; ++i) {//检查5个子连在一起的情况
		if (c[x][i] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = y - 2; i <= y + 2; ++i) {//检查5个子连在一起的情况
		if (c[x][i] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = y - 1; i <= y + 3; ++i) {//检查5个子连在一起的情况
		if (c[x][i] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = y; i <= y + 4; ++i) {//检查5个子连在一起的情况
		if (c[x][i] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;

	for (int i = x - 4; i <= x; ++i) {//检查5个子连在一起的情况
		if (c[i][y] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 3; i <= x + 1; ++i) {//检查5个子连在一起的情况
		if (c[i][y] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 2; i <= x + 2; ++i) {//检查5个子连在一起的情况
		if (c[i][y] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 1; i <= x + 3; ++i) {//检查5个子连在一起的情况
		if (c[i][y] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x; i <= x + 4; ++i) {//检查5个子连在一起的情况
		if (c[i][y] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;

	for (int i = x - 4, j = y - 4; i <= x, j <= y; ++i, ++j) {
		if (c[i][j] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 3, j = y - 3; i <= x + 1, j <= y + 1; ++i, ++j) {
		if (c[i][j] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 2, j = y - 2; i <= x + 2, j <= y + 2; ++i, ++j) {
		if (c[i][j] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 1, j = y - 1; i <= x + 3, j <= y + 3; ++i, ++j) {
		if (c[i][j] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x, j = y; i <= x + 4, j <= y + 4; ++i, ++j) {
		if (c[i][j] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 2, j = y + 2; i <= x + 2, j >= y - 2; ++i, --j) {
		if (c[i][j] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 4, j = y + 4; i <= x, j >= y; ++i, --j) {
		if (c[i][j] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 3, j = y + 3; i <= x + 1, j >= y - 1; ++i, --j) {
		if (c[i][j] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 2, j = y + 2; i <= x + 2, j >= y - 2; ++i, --j) {
		if (c[i][j] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x - 1, j = y + 1; i <= x + 3, j >= y - 3; ++i, --j) {
		if (c[i][j] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;
	for (int i = x, j = y; i <= x + 4, j >= y - 4; ++i, --j) {
		if (c[i][j] == 'w')flag = 5;
		else {
			flag = -1; break;
		}
	}
	if (flag == 5)return true;


	for (int i = y - 1; i <= y + 2; ++i) {//4个子的情况
		if (c[x][i] == 'w')flag = 4;
		else {
			flag = -1; break;
		}
	}
	if (flag == 4) {
		X1 = x; Y1 = y - 2; X2 = x; Y2 = y + 3;
		return false;
	}
	for (int i = y; i <= y + 3; ++i) {
		if (c[x][i] == 'w')flag = 4;
		else {
			flag = -1; break;
		}
	}
	if (flag == 4) {
		X1 = x; Y1 = y - 1; X2 = x; Y2 = y + 4;
		return false;
	}
	for (int i = y - 2; i <= y + 1; ++i) {
		if (c[x][i] == 'w')flag = 4;
		else {
			flag = -1; break;
		}
	}
	if (flag == 4) {
		X1 = x; Y1 = y - 3; X2 = x; Y2 = y + 2;
		return false;
	}
	for (int i = y - 3; i <= y; ++i) {
		if (c[x][i] == 'w')flag = 4;
		else {
			flag = -1; break;
		}
	}
	if (flag == 4) {
		X1 = x; Y1 = y - 4; X2 = x; Y2 = y + 1;
		return false;
	}
	for (int i = x - 3; i <= x; ++i) {
		if (c[i][y] == 'w')flag = 4;
		else {
			flag = -1; break;
		}
	}
	if (flag == 4) {
		X1 = x - 4; Y1 = y; X2 = x + 1; Y2 = y;
		return false;
	}
	for (int i = x - 2; i <= x + 1; ++i) {
		if (c[i][y] == 'w')flag = 4;
		else {
			flag = -1; break;
		}
	}
	if (flag == 4) {
		X1 = x - 3; Y1 = y; X2 = x + 2; Y2 = y;
		return false;
	}
	for (int i = x - 1; i <= x + 2; ++i) {
		if (c[i][y] == 'w')flag = 4;
		else {
			flag = -1; break;
		}
	}
	if (flag == 4) {
		X1 = x - 2; Y1 = y; X2 = x + 3; Y2 = y;
		return false;
	}
	for (int i = x; i <= x + 3; ++i) {
		if (c[i][y] == 'w')flag = 4;
		else {
			flag = -1; break;
		}
	}
	if (flag == 4) {
		X1 = x - 1; Y1 = y; X2 = x + 4; Y2 = y;
		return false;
	}
	for (int i = x - 3, j = y - 3; i <= x, j <= y; i++, j++) {
		if (c[i][y] == 'w')flag = 4;
		else {
			flag = -1; break;
		}
	}
	if (flag == 4) {
		X1 = x - 4; Y1 = y - 4; X2 = x + 1; Y2 = y + 1;
		return false;
	}
	for (int i = x - 2, j = y - 2; i <= x + 1, j <= y + 1; i++, j++) {
		if (c[i][y] == 'w')flag = 4;
		else {
			flag = -1; break;
		}
	}
	if (flag == 4) {
		X1 = x - 3; Y1 = y - 3; X2 = x + 2; Y2 = y + 2;
		return false;
	}
	for (int i = x - 1, j = y - 1; i <= x + 2, j <= y + 2; i++, j++) {
		if (c[i][y] == 'w')flag = 4;
		else {
			flag = -1; break;
		}
	}
	if (flag == 4) {
		X1 = x - 2; Y1 = y - 2; X2 = x + 3; Y2 = y + 3;
		return false;
	}
	for (int i = x, j = y; i <= x + 3, j <= y + 3; i++, j++) {
		if (c[i][y] == 'w')flag = 4;
		else {
			flag = -1; break;
		}
	}
	if (flag == 4) {
		X1 = x - 1; Y1 = y - 1; X2 = x + 4; Y2 = y + 4;
		return false;
	}
	for (int i = x - 3, j = y + 3; i <= x, j >= y; i++, j--) {
		if (c[i][j] == 'w')flag = 4;
		else {
			flag = -1; break;
		}
	}
	if (flag == 4) {
		X1 = x - 4; Y1 = y + 4; X2 = x + 1; Y2 = y - 1;
		return false;
	}
	for (int i = x - 2, j = y + 2; i <= x + 1, j >= y - 1; i++, j--) {
		if (c[i][j] == 'w')flag = 4;
		else {
			flag = -1; break;
		}
	}
	if (flag == 4) {
		X1 = x - 3; Y1 = y + 3; X2 = x + 2; Y2 = y - 2;
		return false;
	}
	for (int i = x - 1, j = y + 1; i <= x + 2, j >= y - 2; i++, j--) {
		if (c[i][j] == 'w')flag = 4;
		else {
			flag = -1; break;
		}
	}
	if (flag == 4) {
		X1 = x - 2; Y1 = y + 2; X2 = x + 3; Y2 = y - 3;
		return false;
	}
	for (int i = x, j = y; i <= x + 3, j >= y - 3; i++, j--) {
		if (c[i][j] == 'w')flag = 4;
		else {
			flag = -1; break;
		}
	}
	if (flag == 4) {
		X1 = x - 1; Y1 = y + 1; X2 = x + 4; Y2 = y - 4;
		return false;
	}



	if (c[x][y] == 'w'&&c[x][y + 1] == 'w'&&c[x][y + 3] == 'w') {//** *的情况
		flag = 3;
		X1 = x; Y1 = y - 1; X2 = x; Y2 = y + 2;
		return false;
	}
	if (c[x][y] == 'w'&&c[x][y - 1] == 'w'&&c[x][y + 2] == 'w') {
		flag = 3;
		X1 = x; Y1 = y - 2; X2 = x; Y2 = y + 1;
		return false;
	}
	if (c[x][y] == 'w'&&c[x][y - 2] == 'w'&&c[x][y - 3] == 'w') {
		flag = 3;
		X1 = x; Y1 = y - 1; X2 = x; Y2 = y + 1;
		return false;
	}
	if (c[x][y] == 'w'&&c[x][y + 2] == 'w'&&c[x][y + 3] == 'w') {//* **的情况
		flag = 3;
		X1 = x; Y1 = y + 1; X2 = x; Y2 = y - 1;
		return false;
	}
	if (c[x][y] == 'w'&&c[x][y - 2] == 'w'&&c[x][y + 1] == 'w') {//* **的情况
		flag = 3;
		X1 = x; Y1 = y - 1; X2 = x; Y2 = y + 2;
		return false;
	}
	if (c[x][y] == 'w'&&c[x][y - 1] == 'w'&&c[x][y - 3] == 'w') {//* **的情况
		flag = 3;
		X1 = x; Y1 = y - 2; X2 = x; Y2 = y + 1;
		return false;
	}
	if (c[x][y] == 'w'&&c[x + 1][y + 1] == 'w'&&c[x + 3][y + 3] == 'w') {//*
		flag = 3;															//*
		X1 = x+2; Y1 = y + 2; X2 = x-1; Y2 = y - 1;								
		return false;															//*的情况	
	}
	if (c[x][y] == 'w'&&c[x - 1][y - 1] == 'w'&&c[x + 2][y + 2] == 'w') {
		flag = 3;
		X1 = x + 1; Y1 = y + 1; X2 = x + 3; Y2 = y + 3;
		return false;
	}
	if (c[x][y] == 'w'&&c[x - 2][y + 2] == 'w'&&c[x - 3][y + 3] == 'w') {
		flag = 3;
		X1 = x - 1; Y1 = y + 1; X2 = x + 1; Y2 = y - 1;
		return false;
	}
	if (c[x][y] == 'w'&&c[x - 1][y + 1] == 'w'&&c[x + 2][y - 2] == 'w') {
		flag = 3;		
		X1 = x + 1; Y1 = y - 1; X2 = x + 3; Y2 = y - 3;
		return false;							
	}
	if (c[x][y] == 'w'&&c[x - 2][y + 2] == 'w'&&c[x - 3][y + 3] == 'w') {//*
		flag = 3;													   //*
		X1 = x - 1; Y1 = y + 1; X2 = x + 1; Y2 = y - 1;					
		return false;												//*
	}

	if (c[x][y] == 'w'&&c[x][y - 1] == 'w'&&c[x][y - 2] == 'w') {//3个子的情况
		flag = 3;
		X1 = x; Y1 = y - 3; X2 = x; Y2 = y + 1;
		return false;
	}
	if (c[x][y + 1] == 'w'&&c[x][y] == 'w'&&c[x][y - 1] == 'w') {
		flag = 3;
		X1 = x; Y1 = y - 2; X2 = x; Y2 = y + 2;
		return false;
	}
	if (c[x][y + 2] == 'w'&&c[x][y + 1] == 'w'&&c[x][y] == 'w') {
		flag = 3;
		X1 = x; Y1 = y - 1; X2 = x; Y2 = y + 3;
		return false;
	}
	if (c[x - 2][y - 2] == 'w'&&c[x - 1][y - 1] == 'w'&&c[x][y] == 'w') {
		flag = 3;
		X1 = x - 3; Y1 = y - 3; X2 = x + 1; Y2 = y + 1;
		return false;
	}
	if (c[x - 1][y - 1] == 'w'&&c[x][y] == 'w'&&c[x + 1][y + 1] == 'w') {
		flag = 3;
		X1 = x - 2; Y1 = y - 2; X2 = x + 2; Y2 = y + 2;
		return false;
	}
	if (c[x][y] == 'w'&&c[x + 1][y + 1] == 'w'&&c[x + 2][y + 2] == 'w') {
		flag = 3;
		X1 = x - 1; Y1 = y - 1; X2 = x + 3; Y2 = y + 3;
		return false;
	}
	if (c[x - 2][y + 2] == 'w'&&c[x - 1][y + 1] == 'w'&&c[x][y] == 'w') {
		flag = 3;
		X1 = x - 3; Y1 = y + 3; X2 = x + 1; Y2 = y - 1;
		return false;
	}
	if (c[x - 1][y + 1] == 'w'&&c[x][y] == 'w'&&c[x + 1][y - 1] == 'w') {
		flag = 3;
		X1 = x - 2; Y1 = y + 2; X2 = x + 2; Y2 = y - 2;
		return false;
	}
	if (c[x][y] == 'w'&&c[x + 1][y - 1] == 'w'&&c[x + 2][y - 2] == 'w') {
		flag = 3;
		X1 = x - 1; Y1 = y + 1; X2 = x + 3; Y2 = y - 3;
		return false;
	}

	if (flag == -1) {
		if (c[x][y] == 'w'&&c[x - 1][y] == 'w') {//两个子的情况
			flag = 2;
			X1 = x - 2; Y1 = y; X2 = x + 1; Y2 = y;
			return false;
		}
		if (c[x][y] == 'w'&&c[x + 1][y] == 'w') {
			flag = 2;
			X1 = x - 1; Y1 = y; X2 = x + 2; Y2 = y;
			return false;
		}
		if (c[x][y] == 'w'&&c[x + 1][y + 1] == 'w') {
			flag = 2;
			X1 = x - 1; Y1 = y - 1; X2 = x + 2; Y2 = y + 2;
			return false;
		}
		if (c[x][y] == 'w'&&c[x - 1][y - 1] == 'w') {
			flag = 2;
			X1 = x - 2; Y1 = y - 2; X2 = x + 1; Y2 = y + 1;
			return false;
		}
		if (c[x][y] == 'w'&&c[x][y - 1] == 'w') {
			flag = 2;
			X1 = x; Y1 = y; X2 = x; Y2 = y - 2;
			return false;
		}
		if (c[x][y] == 'w'&&c[x][y + 1] == 'w') {
			flag = 2;
			X1 = x; Y1 = y; X2 = x; Y2 = y + 2;
			return false;
		}

		for (int i = x - 1; i <= x + 1; i++) {//一个子的情况
			for (int j = y - 1; j <= y + 1; j++) {
				if (c[i][j] == 'o') {
					X1 = i; Y1 = j; X2 = x; Y2 = y;
					flag = 1;
					return false;
				}
			}
		}
	}
}
int main()
{
	init();
	print();
	while (1) {
		int x, y;
		scanf("%d %d", &x, &y);
		if (people(x, y) == false)continue;

		if (check(x, y)) {//check检验人是否胜利
			printf("人胜利!\n");
			break;
		}
		else {//模拟电脑走的步骤,然后check2
			bool flag = computer(X1, Y1, X2, Y2);
			if (flag == true) {
				printf("电脑胜利!\n");
				print();
				break;
			}
			else {
				print();
			}
		}
	}
	return 0;
}