例题下载的数据都能过,但就是超时
查看原帖
例题下载的数据都能过,但就是超时
1313559
cangjunyuehan楼主2024/5/20 17:53
#include<bits/stdc++.h>
using namespace std;
queue<int> f;
int a[100],b[1000],d[100][50],m;
int sum;
int qipan(int x)
{
	for(int i=1;i<=m-x+1;i++)
	{
		int z=f.front();
		f.pop();
		if(a[z+x]==0&&b[z-x+50]==0)
		{
			a[z+x]++;b[z-x+50]++;
			if(sum<100)
			d[sum][x]=z;
			if(f.size())
			qipan(x+1);
			else sum++;
			a[z+x]--;b[z-x+50]--;
			if(sum<10)
			d[sum][x]=0;
		}
		f.push(z);
	}
	
}
int main()
{
	cin>>m;
	for(int i=1;i<=m;i++)
	f.push(i);
	qipan(1);
	for(int i=0;i<=2;i++)
	for(int j=1;j<=m;j++)
	if(d[i][j]==0) d[i][j]=d[i-1][j];
	for(int i=0;i<=2;i++)
	{
		for(int j=1;j<=m;j++)
		cout<<d[i][j]<<" ";
		cout<<endl;
	}
	cout<<sum;
	return 0;
}
2024/5/20 17:53
加载中...