主题:24点的C++算法!!
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
char sig[4]={'+','-','*','/'};
void fun(float n[],char ch[][50],int m)
{
int x[2],y,i,j;
float num[4];
char cc[4][50];
if(m==1)
{
if(fabs(n[0]-24.0)<0.0001)
{
cout<<"\n%s=24"<<ch[0];
getch();
exit(0);
}
}
else
{
for(x[0]=0;x[0]<m;x[0]++)
{
for(x[1]=0;x[1]<m;x[1]++)
{
if(x[1]==x[0])continue;
for(y=0;y<4;y++)
{
switch(y)
{
case 0: num[0]=n[x[0]]+n[x[1]];break;
case 1: num[0]=n[x[0]]-n[x[1]];break;
case 2: num[0]=n[x[0]]*n[x[1]];break;
case 3: if(n[x[1]]==0)break;
num[0]=n[x[0]]/n[x[1]];break;
default:break;
}
if(y!=3||n[x[1]]!=0)
sprintf(cc[0],"(%s%c%s)",ch[x[0]],sig[y],ch[x[1]]);
for(i=0,j=1;i<m;i++)
if(i!=x[0]&&i!=x[1])
{
num[j]=n[i];
strcpy(cc[j],ch[i]);
j++;
}
fun(num,cc,m-1);
}
}
}
}
}
/***********************/
main()
{
float num[4];
int i;
char cx[4][50];
clrscr();
cout<<"请输入4个数";
for(i=0;i<4;i++)
cin>>"%f">>num[i];
for(i=0;i<4;i++)
{
sprintf(cx[i],"%d",(int)num[i]);
}
fun(num,cx,4);
cout<<"无解";
getch();
}
在TC3.0下运行可以成功 从C里面改来的
#include<conio.h>
#include<math.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
char sig[4]={'+','-','*','/'};
void fun(float n[],char ch[][50],int m)
{
int x[2],y,i,j;
float num[4];
char cc[4][50];
if(m==1)
{
if(fabs(n[0]-24.0)<0.0001)
{
cout<<"\n%s=24"<<ch[0];
getch();
exit(0);
}
}
else
{
for(x[0]=0;x[0]<m;x[0]++)
{
for(x[1]=0;x[1]<m;x[1]++)
{
if(x[1]==x[0])continue;
for(y=0;y<4;y++)
{
switch(y)
{
case 0: num[0]=n[x[0]]+n[x[1]];break;
case 1: num[0]=n[x[0]]-n[x[1]];break;
case 2: num[0]=n[x[0]]*n[x[1]];break;
case 3: if(n[x[1]]==0)break;
num[0]=n[x[0]]/n[x[1]];break;
default:break;
}
if(y!=3||n[x[1]]!=0)
sprintf(cc[0],"(%s%c%s)",ch[x[0]],sig[y],ch[x[1]]);
for(i=0,j=1;i<m;i++)
if(i!=x[0]&&i!=x[1])
{
num[j]=n[i];
strcpy(cc[j],ch[i]);
j++;
}
fun(num,cc,m-1);
}
}
}
}
}
/***********************/
main()
{
float num[4];
int i;
char cx[4][50];
clrscr();
cout<<"请输入4个数";
for(i=0;i<4;i++)
cin>>"%f">>num[i];
for(i=0;i<4;i++)
{
sprintf(cx[i],"%d",(int)num[i]);
}
fun(num,cx,4);
cout<<"无解";
getch();
}
在TC3.0下运行可以成功 从C里面改来的