记录编号 161464 评测结果 AAAAAAAAAA
题目名称 算24点 最终得分 100
用户昵称 Gravatarhelloworld123 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2015-05-06 11:51:52 内存使用 0.31 MiB
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#include <climits>
#include <cmath>
#include <cstdlib>
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;
}