📄 24point.cpp
字号:
#include <stdio.h>
#include <string.h>
bool flag;
int max(int a,int b)
{
if (a>b) return a;
else return b;
}
void run(int n,float b[],char x[4][20])
{
float result,c[4];
char y[4][20];
int i,j,k,h;
if (flag == true) return;
if (n==0)
{
if ((int)((b[0]-24)*10000)==0)
{
printf("%s\n",x[0]);
flag = true;
}
}else
{
for (i=0;i<=n;i++)
{
for (j=0;j<=n;j++)
{
if (i!=j)
{
for (k=0;k<=4;k++)
{
if (k==0)
{
result = b[i]+b[j];
for (h=0;h<n;h++)
{
if (h!=i && h!=j)
{
sprintf(y[h],"%s",x[h]);
c[h]=b[h];
}else
{
sprintf(y[h],"(%s+%s)",x[i],x[j]);
c[h]=result;
}
}
}
if (k==1)
{
result = b[i]-b[j];
for (h=0;h<n;h++)
{
if (h!=i && h!=j)
{
sprintf(y[h],"%s",x[h]);
c[h]=b[h];
}else
{
sprintf(y[h],"(%s-%s)",x[i],x[j]);
c[h]=result;
}
}
}
if (k==2)
{
result = b[i]*b[j];
for (h=0;h<n;h++)
{
if (h!=i && h!=j)
{
sprintf(y[h],"%s",x[h]);
c[h]=b[h];
}else
{
sprintf(y[h],"(%s*%s)",x[i],x[j]);
c[h]=result;
}
}
}
if (k==3)
{
if ((int)((b[j])*10000)!=0)
{
result = b[i]/b[j];
for (h=0;h<n;h++)
{
if (h!=i && h!=j)
{
sprintf(y[h],"%s",x[h]);
c[h]=b[h];
}else
{
sprintf(y[h],"(%s/%s)",x[i],x[j]);
c[h]=result;
}
}
}
}
sprintf(y[max(i,j)],"%s",x[n]);
c[max(i,j)]=b[n];
run(n-1,c,y);
}
}
}
}
}
}
int main()
{
float cx[4];
char gua[4][20];
int i,times=0;
while (scanf("%f%f%f%f",&cx[0],&cx[1],&cx[2],&cx[3])!=EOF)
{
flag = false;
for (i=0;i<4;i++)
sprintf(gua[i],"%d",(int)cx[i]);
times++;
printf("Case %d:\n",times);
run(3,cx,gua);
if (flag == false ) printf("No Solution!\n");
}
return 0 ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -