记录编号 |
161464 |
评测结果 |
AAAAAAAAAA |
题目名称 |
算24点 |
最终得分 |
100 |
用户昵称 |
helloworld123 |
是否通过 |
通过 |
代码语言 |
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;
}