讨论 / C++ AC代码
宋子航 2017-08-22 10:49:37
点我顶贴 收藏 删除
#include<iostream>

#include<cstdlib>

#include<cstdio>

#include<cctype>

#include<cstring>

#include<string>

#include<cmath>

#include<ctime>

#include<algorithm>

using namespace std;

int main()

{

bool p[29][29];

int x2,y2,x3,y3,i,j;

long long c[29][29];

memset(p,true,sizeof(p));

memset(c,0,sizeof(c));

scanf("%d%d%d%d",&x2,&y2,&x3,&y3);

x2+=2;y2+=2;x3+=2;y3+=2;//避免数组越界

p[x3][y3]=false;

p[x3+2][y3+1]=false;p[x3+2][y3-1]=false;p[x3+1][y3+2]=false;p[x3+1][y3-2]=false;

p[x3-2][y3-1]=false;p[x3-2][y3+1]=false;p[x3-1][y3+2]=false;p[x3-1][y3-2]=false;

for (i=2;i<=x2;i++)

if (p[i][2]) c[i][2]=1;

else break;

for (i=2;i<=y2;i++)

if (p[2][i]) c[2][i]=1;

else break;

for (i=3;i<=x2;i++)

for (j=3;j<=y2;j++)

if (p[i][j]) c[i][j]=c[i-1][j]+c[i][j-1];

printf("%lld",c[x2][y2]);

return 0;

}

#1 linxinchang16@2017-10-31 21:30:26
回复 删除
#include<iostream>

#include<cstring>

using namespace std;

const int g[9][2]={{0,0},{-1,-2},{-2,-1},{-1,2},{-2,1},{1,-2},{2,-1},{1,2},{2,1}};

int main()

{

long long f[21][21];

int n,m,x,y,i,j;

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

int xx,yy;

memset(f,-1,sizeof(f));

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

{

xx=x+g[i][0];

yy=y+g[i][1];

if((xx>=0&&xx<=n)&&(yy>=0&&yy<=m)) f[xx][yy]=0;

}

f[0][0]=1;

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

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

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

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

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

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

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

cout<<f[n][m]<<endl;

return 0;

}

查看更多回复
提交回复