比赛 |
20100914 |
评测结果 |
AAWWWWAAWW |
题目名称 |
算24点 |
最终得分 |
40 |
用户昵称 |
郭乾乐 |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2010-09-14 20:45:18 |
显示代码纯文本
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("point24.in");
ofstream fout("point24.out");
int a[4];
char fu[6]={'0','+','-','*','/','='};
bool pan=true;
int yunsuan(int a,int b,int i)
{
if(i==1) return(a+b);
if(i==2)
{
if((a-b)<=0) return(-10);
else return (a-b);
}
if(i==3) return(a*b);
if(i==4) return(a/b);
{
if(a/b*b!=a) return(-10);
else return (a/b);
}
return 0;
}
void dfs(bool t[],int sum,int i,int jii[4][6])
{
int j,k,w[5],da,xiao,ji[4][6];
for(j=0;j<=3;j++)
for(k=0;k<=5;k++)
ji[j][k]=jii[j][k];
if(i<4&&sum<24&&pan)
for(j=0;j<4;j++)
if(t[j])
for(k=1;k<=4;k++)
{
w[k]=yunsuan(sum,a[j],k);
if(w[k]<=0) return;
t[j]=false;
if(sum>a[j])
{
da=sum;
xiao=a[j];
}
else
{
da=a[j];
xiao=sum;
}
ji[i][1]=da;
ji[i][2]=k*(-1);
ji[i][3]=xiao;
ji[i][4]=-5;
ji[i][5]=w[k];
dfs(t,w[k],i+1,ji);
t[j]=true;
}
if(sum==24&&i==4&&pan)
{
pan=false;
int p,q;
for(p=1;p<=3;p++)
{
for(q=1;q<=5;q++)
{
if(ji[p][q]<0)
{
ji[p][q]*=-1;
fout<<fu[ji[p][q]];
}
else
fout<<ji[p][q];
}
fout<<endl;
}
return;
}
}
int main()
{
int i,j,ji[4][6];
for(i=0;i<=3;i++)
for(j=0;j<=5;j++)
ji[i][j]=0;
bool t[4]={true,true,true,true};
for(i=0;i<4;i++)
fin>>a[i];
for(i=0;i<4;i++)
{
t[i]=false;
dfs(t,a[i],1,ji);
t[i]=true;
}
if(pan) fout<<"No answer!"<<endl;
return 0;
}