c,60分 3和4超时了,不知道怎么优化了,帮帮,感谢!!
查看原帖
c,60分 3和4超时了,不知道怎么优化了,帮帮,感谢!!
754906
bk492511楼主2023/2/21 19:43
#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);
}
2023/2/21 19:43
加载中...