为什么WA了4个
查看原帖
为什么WA了4个
1373219
acommonman楼主2024/9/5 18:22
#define _CRT_SECURE_NO_WARNINGS 1
#include<bits/stdc++.h>
int num[2][20];
int main()
{
	int horse[9][2] = { {0,0}, { 2,1}, {1,2}, {-1,2}, {-2,1}, {-2,-1}, {-1,-2}, {1,-2}, {2,-1} };
	int n, m, horse_x, horse_y;
	scanf("%d %d %d %d", &n, &m, &horse_x, &horse_y);
	num[0][0] = 1, num[1][0] = 1;
	
	
	for (int j = 1; j <= n; j++)//初始化第一行
	{
		bool flag = true;
		for (int k = 0; k < 9; k++)//判断是否会被马吃
		{
			if (j == horse_x + horse[k][0] && horse_y + horse[k][1] == 0)//如果被吃,清零此处
			{
				num[0][j] = 0;
				flag = false;
				break;

			}
			if (flag) { num[0][j] = 1; }
		}//初始化第一行为1
	}

		for (int i = 1; i <= m; i++)//i是双行搜索的第一行的纵坐标
		{

			for (int j = 1; j <= n; j++)//j是横坐标
			{
				num[1][j] += num[1][j - 1] + num[0][j];//加上左边和上面的路径数
				for (int k = 0; k < 9; k++)//判断是否会被马吃
				{
					if (i  == horse_x + horse[k][0] && j == horse_y + horse[k][1])//如果被吃,清零此处
					{
						num[1][j] = 0;
						break;
					}
				}
				num[0][j] = num[1][j];//更新下面一行为上面一行,向下搜索
			}
			for (int second = 1; second <= n; second++) { num[1][second] = 0; }//清零第二行,表示向下搜索一行
		}
	printf("%d", num[0][n]);
	return 0;
}

为什么WA了4个?

2024/9/5 18:22
加载中...