계산하다
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define OK 1
#define ERROR 0
char sz[8]=" +-*/";
int list[25][5],map[5][5],visit[5],t,pp[5];
char z[400];
double two(double a,int f,double b)
{
switch(f)
{
case 1:
{
return a+b;
break;
}
case 2:
{
return a-b;
break;
}
case 3:
{
return a*b;
break;
}
case 4:
{
return a/b;
break;
}
}
}
int pan(char *x,double a,double b,double c,int f1,int f2)
{
//printf("%s a = %.0lf b= %.0lf c= %.0lf %c %c/n",x,a,b,c,sz[f1],sz[f2]);
double xy=two(a,f1,two(b,f2,c));
//printf("---%.0lf/n",xy);
if(24.0==xy)
{
//printf("ppp %.0lf/n",DIAN);
sprintf(z,"%s%c(%.0lf%c%.0lf)",x,sz[f1],b,sz[f2],c);
return 1;
}
else
return 0;
}
int four(double *a,int *f)//3
{
char x[200],y[200];
double b[3],hou[2];
//if(f[0]==1||f[0]==2)
{
sprintf(x,"(%.0lf%c%.0lf)",a[0],sz[f[0]],a[1]);
}
b[0]=two(a[0],f[0],a[1]);
if(b[0]<0)
{
b[0]=-b[0];
sprintf(x,"(%.0lf%c%.0lf)",a[1],sz[f[0]],a[0]);
}
//if(f[1]==1||f[1]==2)
{
sprintf(y,"(%s%c%.0lf)",x,sz[f[1]],a[2]);
}
b[1]=two(b[0],f[1],a[2]);
// printf("%.0lf %s",b[1],y);
if(b[1]<0)
{
b[1]=-b[1];
sprintf(y,"(%.0lf%c%s)",a[2],sz[f[1]],x);
}
// if(f[2]==1||f[2]==2)
{
sprintf(z,"(%s%c%.0lf)",y,sz[f[2]],a[3]);
}
b[2]=two(b[1],f[2],a[3]);
if(b[2]<0)
{
b[2]=-b[2];
sprintf(z,"(%.0lf%c%s)",a[3],sz[f[2]],y);
}
//printf("-----%.0lf----/n",b[2]);
if(b[2]==24.0)
{
//printf("xxx");
return OK;
}
else
{
if(pan(x,b[0],a[2],a[3],f[1],f[2]))
{
return OK;
}
else
return ERROR;
}
}
void cal(int r,int j)
{
if(r<4)
{
for(int i=0;i<4;i++)
{
if(!visit[i])
{//printf("11111");
visit[i]=1;
pp[j]=map[r][i];
cal(r+1,j+1);
visit[i]=0;
}
}
}
else
{
for(int k=0;k<4;k++)
list[t][k]=pp[k];
t++;
}
}
int main()
{
int a,b,c,d,ttt=0;
int i,j,k,l,kt,flag;
int ft[3];
double at[4];
while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF)
{
ttt++;
t=0;
flag=1;
for( i=0;i<4;i++)
{
map[i][0]=a;
map[i][1]=b;
map[i][2]=c;
map[i][3]=d;
}
cal(0,0);
// printf("t = %d/n",t);
printf("Case %d:/n",ttt);
/*
for(i=0;i<24;i++)
{
for(j=0;j<4;j++)
printf("%d ",list[i][j]);
printf("/n");
}
system("pause");*/
for(i=0;i<t&&flag;i++)
{for(kt=0;kt<4;kt++)
at[kt]=list[i][kt];
for(j=1;j<=4&&flag;j++)
for(k=1;k<=4&&flag;k++)
for(l=1;l<=4&&flag;l++)
{
ft[0]=j;ft[1]=k;ft[2]=l;
if(four(at,ft))
{
printf("%s/n",z);
flag=0;
break;
}
}
}
if(flag)
{
printf("No Solution!/n");
}
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.