记录编号 379127 评测结果 AAAAAAAAAA
题目名称 算24点 最终得分 100
用户昵称 GravatarEmine 是否通过 通过
代码语言 C++ 运行时间 0.004 s
提交时间 2017-03-05 19:36:18 内存使用 0.31 MiB
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int b,c,d;
int a[100];
bool f[15];
int m[5],p[4];
char mm[5];
void print()
{	
    for (int i=1; i<=3; i++)
	{		
	    cout<<max(m[i],p[i]);		
		cout<<mm[i];		
		cout<<min(m[i],p[i])<<'='<<m[i+1]<<endl;
	}		
	exit(0);
}
void dfs(int k)
{	
    if (k>3) 	
	{		
	    if (m[k]==24) print(); 	   
	    return;    
	}    
	for (int i=1; i<=4; i++)    
	{    	
	    if (f[i])    	
		{    		
		    for (int j=1; j<=4; j++)    		
			{    			
			    if (j==1) 				
				{ 
				    m[k+1]=m[k]+a[i]; 
					f[i]=0; 
					mm[k]='+'; 
					p[k]= a[i]; 				
					dfs(k+1);f[i]=1; 
				}			
				if (j==2)				
				{ 
				    if (m[k]-a[i]>0)				
					m[k+1]=m[k]-a[i]; 
					else m[k+1]=a[i]-m[k];				
					f[i]=0; 
					mm[k]='-';
					p[k]= a[i];				 
					dfs(k+1);f[i]=1;
				}				
				if (j==3)				
				{
				    m[k+1]=m[k]*a[i]; 
					f[i]=0; 
					mm[k]='*'; 
					p[k]= a[i];				
					dfs(k+1); 
					f[i]=1;
				}				
				if (j==4&&m[k]!=0&&a[i]!=0)				
				{									  
				    if (m[k]%a[i]==0)				  
					{				  	
					    m[k+1]=m[k]/a[i]; 
						f[i]=0; 
						mm[k]='/'; 
						p[k]= a[i];					  
						dfs(k+1); f[i]=1;				  
					} 				 
				    if (a[i]%m[k]==0)				  
					{				  	
					    m[k+1]=a[i]/m[k]; 
						f[i]=0; 
						mm[k]='/'; 
						p[k]= a[i];					  
						dfs(k+1); f[i]=1;				  
					} 				
				}				
				//cout<<m[k+1]<<endl;    		
			}    	
		}    
	}    
}
int main()
{	
    freopen("point24.in","r",stdin);	
	freopen("point24.out","w",stdout);	
	scanf("%d%d%d%d",&a[1],&a[2],&a[3],&a[4]);	
	//sort(a+1,a+5);	
	memset(f,1,sizeof(f));	
	for(int i=1; i<=4; i++)	
	{		     
	    m[1]=a[i];     
		f[i]=0;     
		dfs(1);     
		f[i]=1;    
	}    
	cout<<"No answer!";		
	return 0;
}