社区讨论
谢谢各位大佬们,3..4点wa了,实在搞不明白哪里错误
P1002[NOIP 2002 普及组] 过河卒参与者 2已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @locwm7b5
- 此快照首次捕获于
- 2023/10/30 20:56 2 年前
- 此快照最后确认于
- 2023/11/05 07:23 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
#define int unsigned long long
int mx,my,bx,by;
int n,m;
int xx[10]={0,2,1,-1,-2,-2,-1,1,2};
int yy[10]={0,1,2,2,1,-1,-2,-2,-1};
int f[45][45];
bool check(int x,int y)
{
for(int i=0;i<9;i++)
{
int vx=mx+xx[i];
int vy=my+yy[i];
if(vx<0 || vx>n || vy<0 || vy>m) continue;
if(x==vx && y==vy) return false;
}
return true;
}
int dfs(int x,int y)
{
if(x<0 || x>n || y<0 || y>m) return 0;
if(check(x,y)==false) {
return f[x][y]=0;
}
if(f[x][y]!=-1) return f[x][y];
return f[x][y]=dfs(x-1,y)+dfs(x,y-1);
}
main()
{
cin>>bx>>by>>mx>>my;
n=bx,m=by;
memset(f,-1,sizeof(f));
for(int i=0;i<=n;i++)
f[i][0]=1;
for(int i=0;i<=m;i++)
f[0][m]=1;
cout<<dfs(bx,by);
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...