不开long long就有错(警告后人)
查看原帖
不开long long就有错(警告后人)
1312199
zhuyucheng6046楼主2024/7/20 21:17

如果你像这样:

#include<bits/stdc++.h>
using namespace std;
int f[20+10][20+10];
bool q[20+10][20+10];
const int dx[8]={-2,-1,-2,-1,1,2,2,1};
const int dy[8]={-1,-2,1,2,-2,-1,1,2};
int main()
{
int n0,n1,n2,n3;
cin>>n0>>n1>>n2>>n3;
f[0][0]=1;
	for(int i=0;i<n0;i++)
		for(int j=0;j<n1;j++)
			q[i][j]=false;
	q[n2][n3]=true;
		for(int t=0;t<8;t++)
		{
			int a=n2+dx[t];
			int b=n3+dy[t];
			if(0<=a&&a<=n0&&0<=b&&b<=n1)
			q[a][b]=true;
		}
	for(int i=0;i<=n0;i++)
		for(int j=0;j<=n1;j++)
		{
			if(i!=0) f[i][j]+=f[i-1][j];
			if(j!=0) f[i][j]+=f[i][j-1];
			if(q[i][j]==true) f[i][j]=0;
		}
		cout<<f[n0][n1]<<endl;
	return 0;
}

那么恭喜你踩坑了。 由于输出数据很大所以要开long long。 像这样:

#include<bits/stdc++.h>
using namespace std;
long long f[20+10][20+10];
bool q[20+10][20+10];
const int dx[8]={-2,-1,-2,-1,1,2,2,1};
const int dy[8]={-1,-2,1,2,-2,-1,1,2};
int main()
{
int n0,n1,n2,n3;
cin>>n0>>n1>>n2>>n3;
f[0][0]=1;
	for(int i=0;i<n0;i++)
		for(int j=0;j<n1;j++)
			q[i][j]=false;
	q[n2][n3]=true;
		for(int t=0;t<8;t++)
		{
			int a=n2+dx[t];
			int b=n3+dy[t];
			if(0<=a&&a<=n0&&0<=b&&b<=n1)
			q[a][b]=true;
		}
	for(int i=0;i<=n0;i++)
		for(int j=0;j<=n1;j++)
		{
			if(i!=0) f[i][j]+=f[i-1][j];
			if(j!=0) f[i][j]+=f[i][j-1];
			if(q[i][j]==true) f[i][j]=0;
		}
		cout<<f[n0][n1]<<endl;
	return 0;
}
2024/7/20 21:17
加载中...