0
已解决
汪宇航
新手启示者
新手启示者
#include <iostream>
using namespace std;
long long f[500][500]={
};
int main(){
bool g[500][500];
int m,n,a,b;
cin>>m>>n>>a>>b;
f[0][0]=1;
for(int i=0;i<=m;i++){
for(int j=0;j<=n;j++){
f[0][0]=1;
g[i][j]=0;
g[a-2][b-1]=1,g[a-2][b+1]=1,g[a-1][b-2]=1,g[a-1][b+2]=1,g[a+1][b-2]=1,g[a+1][b+2]=1,g[a+2][b-1]=1,g[a+2][b+1]=1;
if(g[i][j]==1) f[i][j]=0;
else if(i>0&&g[i][0]==0) f[i][0]=f[i-1][0];
else if(j>0&&g[0][j]==0) f[0][j]=f[0][j-1];
else if(i>0&&j>0&&g[i][j]==0) f[i][j]=f[i-1][j]+f[i][j-1];
}
}
cout<<f[m][n];
return 0;
}
Where is 错误?
错误再哪里???
0
已采纳
李显晨
中级启示者
中级启示者
你这个写的我看不懂,还是看思路吧
思路:
一、定义状态
f[i][j]表示走到(i,j)点的方案数
二、 递推关系
f[i][j]=f[i-1][j]+f[i][j-1]
三、边界
bool con[5][10]; 标记被控制的点
马在(x,y)这一点,定义dir方向数组
int dir[9][2]={{0,0},{-1,-2},{-2,-1},{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2}};
for(int i=0;i<9;i++){ 遍历9个方向
int dx=x+dir[i][0],dy=y+dir[i][1]; 从(x,y)能一步到达的位置
con[dx][dy]=1;
}
if(con[i][j]) f[i][j]=0;
f[0][0]=1;
i==0 f[i][j]=f[i][j-1];
j==0 f[i][j]=f[i-1][j];
i==0&&j==0 f[i][j]=1;