求助大佬,递归,40分,TLE
查看原帖
求助大佬,递归,40分,TLE
704170
lianghanrui楼主2023/3/5 15:20

废话不说,看代码

#include<iostream>
using namespace std;
int bn,bm,hn[10],hm[10],n;
void f(int an,int am)
{
	bool a=1,b=1;
	if(an==bn&&am==bm)
	n++;
	for(int i=1;i<=5;i++)
	{ 
		int j[2];
		if(hm[i]-hm[1]>0)
		{
		j[0]=3-(hm[i]-hm[1]);
		j[1]=-(3-(hm[i]-hm[1]));
		}
		if(hm[i]-hm[1]<0)
		{
		j[0]=3+(hm[i]-hm[1]);
		j[1]=-(3+(hm[i]-hm[1]));
		}
		if(hm[i]-hm[1]==0)
		{
		j[0]=0;
		j[1]=0;
		}
		if(am==hm[i]&&an+1==hn[1]+j[0]||an+1>bn)
			a=0;
		if(am==hm[i]&&an+1==hn[1]+j[1]||an+1>bn)
			a=0;
		if(am+1==hm[1]+j[0]&&an==hn[i]||am+1>bm)
			b=0;
		if(am+1==hm[1]+j[1]&&an==hn[i]||am+1>bm)
			b=0;
			} 
	if(a==1)
		f(an+1,am);
	if(b==1)
		f(an,am+1);
	
}
int main()
{
	int an=0,am=0;
	cin>>bn>>bm>>hn[1]>>hm[1];
	hn[2]=hn[1]+1;
	hn[3]=hn[1]+2;
	hn[4]=hn[1]-1;
	hn[5]=hn[1]-2;
	hm[2]=hm[1]+1;
	hm[3]=hm[1]+2;
	hm[4]=hm[1]-1;
	hm[5]=hm[1]-2;
	f(an,am);
	cout<<n;
	return 0;
}

~~一定用pd吗,卡好久了,~~大佬帮帮忙

2023/3/5 15:20
加载中...