• 个人简介

    www.luogu.com.cn 
    洛谷
    
    ``````//24点2.0
    #include<bits/stdc++.h>
    using namespace std;
    int a[10],b[10],x[10],y[10];
    void sc()
    {
    	for(int i=1;i<=3;i++)
    	{
    		if(x[i]<y[i])swap(x[i],y[i]);
    		cout<<x[i];
    		if(b[i]==1)cout<<"+"<<y[i]<<"="<<x[i]+y[i];
    		if(b[i]==2)cout<<"-"<<y[i]<<"="<<x[i]-y[i];
    		if(b[i]==3)cout<<"*"<<y[i]<<"="<<x[i]*y[i];
    		if(b[i]==4)cout<<"/"<<y[i]<<"="<<x[i]/y[i];
    		cout<<"\n";
    	}
    }
    bool ck()
    {
    	for(int i=1;i<=4;i++)if(a[i]==24)return 1;
    	return 0; 
    }
    void dfs(int t)
    {
    	if(t>3)
    	{
    		if(ck())
    		{
    			sc();
    			exit(0);
    		}
    		return;
    	}
    	for(int i=2;i<=4;i++)
    	{
    		for(int j=1;j<=4;j++)
    		{
    			if(i!=j&&a[j]!=-1&&a[i]!=-1)
    			{
    				for(int k=1;k<=4;k++)
    				{
    					x[t]=a[i];
    					y[t]=a[j];
    					int l=a[i],r=a[j];
    					if(k==1)
    					{
    						b[t]=1;
    						a[i]=l+r;
    					}
    					if(k==2)
    					{
    						b[t]=2;
    						a[i]=abs(l-r);
    					}
    					if(k==3)
    					{
    						b[t]=3;
    						a[i]=l*r;
    					}
    					if(k==4)
    					{
    						if(a[j]==0||l%r!=0)continue;
    						b[t]=4;
    						a[i]=l/r;
    					}
    					a[j]=-1;
    					dfs(t+1);
    					a[i]=l;
    					a[j]=r;
    				}			
    			}
    		}
    	}
    }
    int main()
    {
    	//freopen("Poker.in","r",stdin);
    	//freopen("Poker.out","w",stdout);
    	cin>>a[1]>>a[2]>>a[3]>>a[4];
    	dfs(1); 
    	cout<<"No answer!";
    	return 0;
    }
    
    
    
    
    
  • 通过的题目

  • 最近活动

    This person is lazy and didn't join any contests or homework.
  • 最近编写的题解

题目标签

聪明人游戏
2
深搜 广搜
1
广搜
1
大沥2021
1