P1002 60分 倒数第二第三两个点WA,求调
查看原帖
P1002 60分 倒数第二第三两个点WA,求调
632830
Mark_666楼主2024/7/4 09:08
#include <bits/stdc++.h>
using namespace std;
#define long long int
const int N=30;
int dx[]={0,1,2,2,1,-1,-2,-2,-1};
int dy[]={0,-2,-1,1,2,2,1,-1,-2};
int hx[10];
int hy[10];
int a[N][N];
int ax,ay,bx,by;
int flag;
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>ax>>ay>>bx>>by;
	ax++;
	ay++;
	bx++;
	by++;
	for(int i=1;i<=8;i++)
	{
		int px=bx+dx[i];
		int py=by+dy[i];
		if(px<1||px>ax||py<1||py>ay) continue;
		hx[i]=px;
		hy[i]=py;
	}
	hx[9]=bx;
	hy[9]=by;
	a[1][1]=1;
	for(int i=1;i<=ax;i++)
	{
		for(int j=1;j<=ay;j++)
		{
			for(int k=1;k<=9;k++) 
				if(i==hx[k]&&j==hy[k]) 
					flag=1;
			if(!flag)
			{
				if(i==1) a[i][j]=a[i][j]+a[i][j-1];
				else if(j==1) a[i][j]=a[i][j]+a[i-1][j];
				else a[i][j]=a[i][j]+a[i-1][j]+a[i][j-1];
			}
				
			flag=0;
		}
	}
	/*for(int i=1;i<=ax;i++)
	{
		for(int j=1;j<=ay;j++)
		{
			cout<<a[i][j]<<' ';
		}
		cout<<endl;
	  }*/
	cout<<a[ax][ay];

	return 0;
}

测试数据的时候发现有的地方出现了负数,但是没看出来哪里越界了

2024/7/4 09:08
加载中...