CSP-J P1002 过河卒(DP)

DP入门级,注意在初始化边界的时候不能全部都赋值为1,检测当走到这个格子走不了的时候就break掉。

代码如下:

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

ll ax,ay,bx,by,f[23][23];

int fx[9]={2,1,-1,-2,-2,-1,1,2,0},fy[9]={1,2,2,1,-1,-2,-2,-1,0};

bool check(int,int);

void init(){

cin>>bx>>by>>ax>>ay;

for(int i=0;i<=bx;i++)

if(check(i,0))

f[i][0]=1;

else

break;

for(int i=0;i<=by;i++)

if(check(0,i))

f[0][i]=1;

else

break;

}

bool check(int x,int y){

for(int i=0;i<=8;i++)

if(x+fx[i]==ax&&y+fy[i]==ay)

return 0;

return 1;

}

int main(){

init();

for(int i=1;i<=bx;i++){

for(int j=1;j<=by;j++)

if(check(i,j))

f[i][j]=f[i-1][j]+f[i][j-1];

else

f[i][j]=0;

}

cout<<f[bx][by]<<endl;

return 0;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。