| 记录编号 | 19358 | 评测结果 | AAAAAAAAAA | 
    
        | 题目名称 | 115.算24点 | 最终得分 | 100 | 
    
        | 用户昵称 |  郭乾乐 | 是否通过 | 通过 | 
    
        | 代码语言 | C++ | 运行时间 | 0.010 s | 
    
        | 提交时间 | 2010-10-08 20:38:03 | 内存使用 | 0.26 MiB | 
    
    
    
    		显示代码纯文本
		
		#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("point24.in");
ofstream fout("point24.out");
int num[4],data[4][4];
bool t[4]={true,true,true,true},pan=true;
char fu[4]={'+','-','*','/'};
int yun(int a,int b,int c)
{
	if(c==0) return (a+b);
	if(c==1) return (a-b);
	if(c==2) return (a*b);
	if(c==3)
	{
		if(a%b==0)
			return(a/b);
		else
		{
		    if(b%a==0)
			    return(b/a);
			else
			    return(-100000);
		}
	}
	return 0;
}
void dfs(int i,int ci,int sum)
{
	int r;
	if(!pan) return;
	if(ci==4)
	{
		if(sum==24)
		{
			for(r=1;r<=3;r++)
			{
			fout<<data[r][0];
			fout<<fu[data[r][1]];
			fout<<data[r][2];
			fout<<'=';
			fout<<data[r][3]<<endl;
			}
			pan=false;
		}
		return;
	}
	int j,k,big,small,temp;
	for(k=0;k<=3;k++)//j 符号
		for(j=0;j<=3;j++)//k 数字
			if(t[k]&&k!=i&&pan)
			{
				temp=yun(sum,num[k],j);
				if(temp<0&&temp!=-100000) temp=-1*temp;
				if(temp!=-100000&&temp!=0)
				{
				    big=sum; small=num[k];
					if(sum<num[k])
					{
						big=num[k];
						small=sum;
					}
					data[ci][0]=big;
					data[ci][1]=j;
					data[ci][2]=small;
					data[ci][3]=temp;
					t[k]=false;
					dfs(k,ci+1,temp);
					t[k]=true;
				}
			}
}
	
int main()
{
	int i;
	for(i=0;i<=3;i++) fin>>num[i];
	for(i=0;i<=3;i++)
	{
		t[i]=false;
		dfs(i,1,num[i]);
		t[i]=true;
	}
	if(pan) fout<<"No answer!"<<endl;
	return 0;
}