样例第一行对了后面是错的且找不到错。。
查看原帖
样例第一行对了后面是错的且找不到错。。
1112369
__oio__楼主2024/4/20 11:31

大佬求调 下面是我代码

#include <bits/stdc++.h> 
using namespace std;

long long x,y,a = 1,b = 1,len;

int fun(int k)
{
	int sum = 1;
	for (int i = 1;i <= k;i++)
	{
		sum *= 2;
	}
	return sum;
}

void solve(long long x,long long y,long long a,long long b,long long len)
{
	if (len == 1)
	{
		return;
	}
	if (x - a <= len / 2 - 1 &&y - b <= len / 2 - 1)
	{
		printf("%d %d ", a + len/2,b+len/2);
		cout<<"1"<<endl;
		solve(x,y,a,b,len/2);
		solve(a+len/2,b+len/2-1,a+len/2,b,len/2);
		solve(a+len/2-1,b+len/2,a,b+len/2,len/2);
		solve(a+len/2,b+len/2,a+len/2,b+len/2,len/2);
	}
	else if(x - a > len / 2 - 1&& y - b <= len / 2 - 1)
	{
		printf("%d %d ", a + len/2-1,b+len/2);
		cout<<"2"<<endl;
		solve(x,y,a,b+len/2,len/2);
		solve(a+len/2-1,b+len/2-1,a,b,len/2);
		solve(a+len/2-1,b+len/2,a,b+len/2,len/2);
		solve(a+len/2,b+len/2,a+len/2,b+len/2,len/2);
	}
	else if (x - a > len / 2 - 1&& y - b > len / 2 - 1)
	{
		printf("%d %d ", a + len/2,b+len/2-1);
		cout<<"3"<<endl;
		solve(x,y,a+len/2-1,b+len/2,len/2);
		solve(a+len/2,b+len/2-1,a+len/2,b,len/2);
		solve(a+len/2-1,b+len/2-1,a,b,len/2);
		solve(a+len/2,b+len/2,a+len/2,b+len/2,len/2);
	}
	else if (x - a <= len / 2 - 1&& y - b > len / 2 - 1)
	{
		printf("%d %d ", a + len/2-1,b+len/2-1);
		cout<<"4"<<endl;
		solve(x,y,a+len/2,b+len/2,len/2);
		solve(a+len/2,b+len/2-1,a+len/2,b,len/2);
		solve(a+len/2-1,b+len/2-1,a,b,len/2);
		solve(a+len/2-1,b+len/2,a,b+len/2,len/2);
	}
}
2024/4/20 11:31
加载中...