40分求助!麻烦大佬帮忙看看
查看原帖
40分求助!麻烦大佬帮忙看看
101306
4th11楼主2021/10/23 18:34
#include<bits/stdc++.h>
using namespace std;
long long x[105][105];
long long dp[105][105];
int main()
{
	int n,m;
	cin>>n>>m;
	int hrx,hry;cin>>hrx>>hry;
	n+=2;m+=2;hrx+=2;hry+=2;
	memset(x,0,sizeof(x));
	x[hrx][hry]=1;
	x[hrx-1][hry-2]=1;
    x[hrx-2][hry-1]=1;
    x[hrx-2][hry+1]=1;
    x[hrx-1][hry+2]=1;
    x[hrx+1][hry-2]=1;
    x[hrx+2][hry-1]=1;
    x[hrx+2][hry+1]=1;
    x[hrx+1][hry+2]=1;
	memset(dp,0,sizeof(dp));
	dp[2][2]=1;dp[3][2]=1;dp[2][3]=1;
	for(int i=1;i<=n;i++)
	{
		dp[i][2]=1;
	}
	for(int j=1;j<=m;j++)
	{
		dp[2][j]=1;
	} 
	for(int i=3;i<=n;i++)
		for(int j=3;j<=m;j++)
		{
			if(x[i][j]==1)dp[i][j];
			if(x[i][j]==0)
			{
				dp[i][j]=dp[i-1][j]+dp[i][j-1];
			}
		}
	cout<<dp[n][m];
	
	return 0;	
}
 

我的思路是先把x,y两条边赋值为1然后再推,不考虑这两条了,看了题解以为是越界什么的每个坐标加了2,但还是40分,不知道哪里错了...谢谢帮助

2021/10/23 18:34
加载中...