社区讨论
为什么递归会超时
P1002[NOIP 2002 普及组] 过河卒参与者 6已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @mi4eosru
- 此快照首次捕获于
- 2025/11/18 18:03 4 个月前
- 此快照最后确认于
- 2025/11/18 18:03 4 个月前
CPP
#include<iostream>
using namespace std;
long long num=0;int chess[21][21],n,m,x,y;
int dx[9]={0,1,2,1,2,-1,-2,-1,-2};
int dy[9]={0,-2,-1,2,1,-2,-1,2,1};
void read()
{
int i;
cin>>n>>m>>x>>y;
chess[x][y]=1;
for (i=1;i<=8;i++)
{
if (x+dx[i]>=1&&x+dx[i]<=n&&y+dy[i]>=1&&y+dy[i]<=m)
chess[x+dx[i]][y+dy[i]]=1;
}
}
void fang(int x,int y)
{
if (x==n&&y==m)
{
num++;
return;
}
if (chess[x][y+1]==0&&y+1<=m)
fang(x,y+1);
if (chess[x+1][y]==0&&x+1<=n)
fang(x+1,y);
}
int main()
{
read();
fang(0,0);
cout<<num;
return 0;
}
回复
共 6 条回复,欢迎继续交流。
正在加载回复...