回 帖 发 新 帖 刷新版面

主题: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里面改来的

回复列表 (共3个回复)

沙发

再BCB6中没反应。

板凳

说真,你的程序很不行

3 楼

一看到这个,我就想起我在文曲星上用basic编的24点,运行起来超级慢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册