讨论 / 用long long!
xazhj741 2014-02-11 18:36:43
点我顶贴 收藏 删除
#include<iostream>

using namespace std;

bool can[26][26];

int n,m;

bool judge(int x,int y)

{

if ((x <= n) && (x >= 0) && (y <= m) && (y >= 0) && (can[x][y]))

return true;

else return false;

}

void horse(int x,int y)

{

int i,j;

int yi[9] = {0,1,2,2,1,-1,-2,-2,-1},

xi[9] = {0,2,1,-1,-2,-2,-1,1,2};

for (i = 0; i <= n; i++)

{

for (j = 0; j <= m; j++)

{

can[i][j] = true;

}

}

can[x][y] = false;

for (i = 1; i <= 8; i++)

{

if (judge(x+xi[i],y+yi[i]))

{

can[x+xi[i]][y+yi[i]] = false;

}

}

}

int main()

{

long long f[26][26] = {0};

int x,y,i,j;

cin>>n>>m>>x>>y;

horse(x,y);

f[0][0] = 1;

for (i = 0; i <= n; i++)

{

for (j = 0; j <= m; j++)

{

if (can[i][j])

{

if (i-1 >= 0) f[i][j] += f[i-1][j];

if (j-1 >= 0) f[i][j] += f[i][j-1];

}

}

}

cout<<f[n][m];

return 0;

}

查看更多回复
提交回复