听说iddfs能过,故请各位大佬帮我改改,75
查看原帖
听说iddfs能过,故请各位大佬帮我改改,75
696431
lijunxi1楼主2023/10/15 22:01
#include<bits/stdc++.h>
using namespace std;
int T,n,a[505];
bool sy;

string q(int x)
{
	string re="",s1="";
	while(x>0)
	{
		re+=x%10+'0';
		x/=10;
	}
	for(int i=re.size()-1;i>=0;i--)s1+=re[i];
	return s1;
}
void iddfs(int x,int y,vector<int>v,string b)
{
	if(!sy)return;
	if(x>y)
	{
	//	for(int i=0;i<v.size();i++)cout<<v[i]<<" ";
	//	cout<<"\n";
		if(v.size()==1)
		{
			sy=0;
			cout<<b;
		}
		return;
	}
	for(int i=0;i<v.size()&&sy;i++)
	{
		for(int j=i+1;j<v.size()&&sy;j++)
		{
			for(int k=j+1;k<v.size()&&sy;k++)
			{
				if(int(v[i]^v[j]^v[k])==0)
				{
					//cout<<i<<" "<<j<<" "<<k<<" "<<v[i]<<" "<<v[j]<<" "<<v[k]<<" "<<int(v[i]^v[j]^v[k])<<"\n";
					int h=v[i];
					for(int l=i+1;l<=k;l++)h^=v[l];
					vector<int>vv;
					for(int l=0;l<i;l++)vv.push_back(v[l]);
					vv.push_back(h);
					for(int l=k+1;l<v.size();l++)vv.push_back(v[l]);
					iddfs(x+1,y,vv,b+q(i+1)+" "+q(j+1)+" "+q(k+1)+"\n");
				}
			}
		}
	}
}

int main ()
{
	//freopen("3.in","r",stdin);
	//freopen("3.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin>>T;
	while(T--)
	{
		cin>>n;for(int i=1;i<=n;i++)cin>>a[i];
		if(n==1)cout<< "Huoyu\n0\n";
		else
		{
			sy=1;vector<int>v;
			for(int i=1;i<=n;i++)v.push_back(a[i]);
			for(int i=0;i<=n&&sy;i++)
			{
				iddfs(1,i,v,"Huoyu\n"+q(i)+"\n");
			}
			if(sy)cout<<"Shuiniao\n";
		}
		
	}
}
2023/10/15 22:01
加载中...