1036571256 2013-10-20 04:15:00
点我顶贴
收藏
删除
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
long long f[26][26];
const int dx[8]={-1,-2,-2,-1,1,2,2,1},dy[8]={-2,-1,1,2,2,1,-1,-2};
int main()
{
int n,m,x,y,i,j,a[26][26];
cin>>n>>m>>x>>y;
memset(a,0,sizeof(a));
a[0][0]=-1;a[x][y]=-1;
for (i=0;i<=7;i++)
a[x+dx[i]][y+dy[i]]=-1;
f[0][0]=1;
for (i=0;i<=n;i++)
for (j=0;j<=m;j++)
if (a[i][j]!=-1) f[i][j]=f[i-1][j]+f[i][j-1];
cout<<f[n][m];
}
#1 107229HR@2013-07-17 02:12:00
30313
回复
删除
你的a会因为+2或-2越界
越界以后,我举个例子
例如x=23,y=25
a[x+1][y+2]成了
a[24][27]与a[25][1]等价
于是你就错了