⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 24point.cpp

📁 24点游戏,给出任意4个数字
💻 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 + -