蒟蒻80分求问
  • 板块P1236 算24点
  • 楼主GavinCayne
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/8/1 13:55
  • 上次更新2023/11/3 06:34:29
查看原帖
蒟蒻80分求问
523754
GavinCayne楼主2023/8/1 13:55

蒟蒻啥也不会,闲着蛋疼 搞爆搜,10和11两个点过不去QwQ ,不知道哪个细节出问题了

#include<bits/stdc++.h>
using namespace std;
double a[5],r[5];char c[5]={0,43,45,42,47};
signed main()
{
	for(int i=1;i<=4;i++)cin>>a[i];
	if(a[1]==a[2]&&a[1]==a[3]&&a[1]==a[4])
	{
		if(a[1]==3)
		{
			cout<<3<<'*'<<3<<"="<<9<<endl;
			cout<<9<<'*'<<3<<"="<<27<<endl;
			cout<<27<<'-'<<3<<"="<<24<<endl;
		}
		else if(a[1]==4)
		{
			cout<<4<<'*'<<4<<"="<<16<<endl;
			cout<<4<<'+'<<4<<"="<<8<<endl;
			cout<<16<<'+'<<8<<"="<<24<<endl;
		}
		else if(a[1]==5)
		{
			cout<<5<<'*'<<5<<"="<<25<<endl;
			cout<<5<<'/'<<5<<"="<<1<<endl;
			cout<<25<<'-'<<1<<"="<<24<<endl;
		}
		else if(a[1]==6)
		{
			cout<<6<<'*'<<6<<"="<<36<<endl;
			cout<<36<<'-'<<6<<"="<<30<<endl;
			cout<<30<<'-'<<6<<"="<<24<<endl;			
		}
		else if(a[1]==12)
		{
			cout<<12<<'+'<<12<<"="<<24<<endl;
			cout<<24<<'+'<<12<<"="<<36<<endl;
			cout<<36<<'-'<<12<<"="<<24<<endl;			
		}
		else cout<<"No answer!";
		return 0;
	}
	for(int first=1;first<=4;first++)
	{
		for(int second=1;second<=4;second++)
		{
			if(first!=second)
			{
				for(int third=1;third<=4;third++)
				{
					if(first!=third&&second!=third)
					{
						int fourth=10-first-second-third;						
						for(int i=1;i<=4;i++)//1+ 2- 3* 4/ 
						{
							double ans=a[first];
							memset(r,0,sizeof(r));
							if(i==1)ans+=a[second];
							else if(i==2)ans=max(ans,a[second])-min(ans,a[second]);
							else if(i==3)ans*=a[second];
							else ans/=a[second];
							if(ans<0)continue;
							r[1]=ans;//前两个数 
							for(int j=1;j<=4;j++)
							{								
								if(j==1)ans+=a[third];
								else if(j==2)ans=max(ans,a[third])-min(ans,a[third]);
								else if(j==3)ans*=a[third];
								else ans/=a[third];
								r[2]=ans;//前三个数 							
								for(int k=1;k<=4;k++)
								{
									double ans2=a[third];
									if(k==1)
									{
										ans+=a[fourth];ans2+=a[fourth];r[3]=ans2;//后两个数 
									}
									else if(k==2)
									{
										ans=max(ans,a[fourth])-min(ans,a[fourth]);
										ans2=max(ans2,a[fourth])-min(ans2,a[fourth]);r[3]=ans2;
									}
									else if(k==3)
									{
										ans*=a[fourth];ans2*=a[fourth];r[3]=ans2;
									}
									else{
										ans/=a[fourth];ans2/=a[fourth];r[3]=ans2;
									} 
									if(ans==24)
									{
cout<<max(a[first],a[second])<<c[i]<<min(a[first],a[second])<<"="<<r[1]<<endl;
cout<<max(r[1],a[third])<<c[j]<<min(r[1],a[third])<<"="<<r[2]<<endl;
cout<<max(r[2],a[fourth])<<c[k]<<min(r[2],a[fourth])<<"="<<24<<endl;
return 0;										
									}
									if(j==1)ans2=ans2+r[1];
									else if(j==2)ans2=r[1]-ans2;
									else if(j==3)ans2=r[1]*ans2;
									else ans2=r[1]/ans2;
									if(ans2==24)
									{
cout<<max(a[first],a[second])<<c[i]<<min(a[first],a[second])<<"="<<r[1]<<endl;
cout<<max(a[fourth],a[third])<<c[k]<<min(a[fourth],a[third])<<"="<<r[3]<<endl;
cout<<max(r[1],r[3])<<c[j]<<min(r[1],r[3])<<"="<<24<<endl;
return 0;										
									}
								}
							}
						}
					}
				}
			}		
		}
	}
	cout<<"No answer!";
	return 0;
}

求助大佬!!!(100%爆搜,绝对看得懂)

2023/8/1 13:55
加载中...