社区讨论
c,60分 3和4超时了,不知道怎么优化了,帮帮,感谢!!
P1002[NOIP 2002 普及组] 过河卒参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lo33g3gk
- 此快照首次捕获于
- 2023/10/24 00:10 2 年前
- 此快照最后确认于
- 2023/10/24 00:10 2 年前
C
#include<stdio.h>
#include<math.h>
int mymep[25][25]={};
long long set=0;//这里用的全局收集结果,省的往回传了
int getset(int x,int y,int hx,int hy);
int main()
{
int myx,myy,hx,hy;
scanf("%d%d%d%d",&myx,&myy,&hx,&hy);
getset(myx+1,myy+1,hx+1,hy+1);
printf("%lld",set);
return 0;
}
int getset(int x,int y,int hx,int hy)
{
if(x==1&&y==1)//回到原点 算一次
{
set++;
return 0;
}
else if(fabs(x-hx)<=2 && fabs(y-hy)<=2)//用距离来先筛一次,(感觉没有鸟用)
{
if(((x-hx)*(x-hx)+(y-hy)*(y-hy))==5 || (x==hx && y==hy))//(再拿具体距离再筛一次)
{
return 0;
}
}//这里如果没事就继续递归
if(x>1)
getset(x-1,y,hx,hy);
if(y>1)
getset(x,y-1,hx,hy);
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...