Time: 3 hrs 20 mins
一个把我搞得快崩溃的题,一开始没有把问题考虑好,采用边输入边检查攻击范围,没有考虑到后面的棋子。
第二个问题,黑将可以吃子的问题,采用的解决方法是车和炮的攻击范围,从一开始会被棋子打断(该位置不在范围),到包括该位置,即假如黑将吃了这个棋子,那么就进入攻击范围。
一个把我搞得快崩溃的题,一开始没有把问题考虑好,采用边输入边检查攻击范围,没有考虑到后面的棋子。
第二个问题,黑将可以吃子的问题,采用的解决方法是车和炮的攻击范围,从一开始会被棋子打断(该位置不在范围),到包括该位置,即假如黑将吃了这个棋子,那么就进入攻击范围。
第三,忘记把红将也设置为红车进行判定,这才把所有情况考虑周到,但是又忘记删掉重定向,最后才AC。
#include <iostream>
#include <cstring>
using namespace std;
int N, bx, by;
int map[20][20] = { 0 };
int chess[20][20] = { 0 };
void cAtk(int x, int y)
{
int flag = 0;
for (int i = x + 1; i < 11; i++)
{
if (chess[i][y] < 2 && flag)
map[i][y] = 1;
if (chess[i][y] > 1 && flag)
{
map[i][y] = 1; break;
}
else if (chess[i][y] > 1)
flag = 1;
}
flag = 0;
for (int i = x - 1; i > 0; i--)
{
if (chess[i][y] < 2 && flag)