讨论 / 求助第4、第9个点
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
回复 删除
你的a会因为+2或-2越界

越界以后,我举个例子

例如x=23,y=25

a[x+1][y+2]成了

a[24][27]与a[25][1]等价

于是你就错了

#2 107229HR@2013-07-17 02:15:00
回复 删除
回复 沙发107229HR 的帖子

解决方案:

对边界进行判断

另外希望能得到分

#3 1036571256@2013-07-17 02:17:00
回复 删除
谢谢

#4 107229HR@2013-07-17 03:00:00
回复 删除
回复 地毯1036571256 的帖子

..悬赏分能给出来么。。

#5 1036571256@2013-10-20 04:15:00
回复 删除
一直没上,抱歉啊,

我把分发上了

查看更多回复
提交回复