您的位置:首页 > 编程语言 > C语言/C++

C++实现回溯

2013-11-26 09:28 260 查看
#include <stdio.h>

int i=0;

void dian(float a,float b,float c,float d,int j);  /*回朔声明*/

void jia(float a,float b,float c,float d,int j)   /*进行加的运算*/

  {if ((a*b!=0)&&(j<4)&&(i!=1))

     {dian(a+b,c,d,0,j+1);

     if (i==1)

 printf("%g=%g+%g\n",a+b,a,b);}

  }

void jian(float a,float b,float c,float d,int j)  /*进行减的运算*/

  {if ((a*b!=0)&&(j<4)&&(i!=1))

     {dian(a-b,c,d,0,j+1);

      dian(b-a,c,d,0,j+1);

     if (i==1)

       printf("%g=%g-%g\n",a-b,a,b);}

  }

void cheng(float a,float b,float c,float d,int j)  /*进行乘的运算*/

  {if ((a*b!=0)&&(j<4)&&(i!=1))

     {dian(a*b,c,d,0,j+1);

     if (i==1)

       printf("%g=%g*%g\n",a*b,a,b);}

  }

void chu(float a,float b,float c,float d,int j)   /*进行除的运算*/

  {if ((a*b!=0)&&(j<4)&&(i!=1))

     {dian(a/b,c,d,0,j+1);

     if (i==1)

       printf("%g=%g/%g\n",a/b,a,b);}

  }

void dian(float a,float b,float c,float d,int j)  /*进行回朔*/

  {

   jia(a,b,c,d,j);

   cheng(a,b,c,d,j);

   jian(a,d,b,c,j);

   chu(a,d,b,c,j);

   jia(a,c,b,d,j);

   cheng(a,c,b,d,j);

   jia(a,d,c,b,j);

   cheng(a,d,c,b,j);

   jian(a,b,c,d,j);

   chu(a,b,c,d,j);

   jian(b,a,c,d,j);

   chu(b,a,c,d,j);

   jian(d,a,b,c,j);

   chu(d,a,b,c,j);

   jian(a,c,b,d,j);

   chu(a,c,b,d,j);  /*进行交换(这里可以用程序嵌套简化)*/

   if ((j==3)&&(a+b+c+d==24))   /*运算的结果是否是24,如果为24将记号改为1*/

       i=1;

  }

void main()

  {float a,b,c,d;

   printf("input 4 num");

   scanf("%f%f%f%f",&a,&b,&c,&d);

   if (i==0) dian(a,b,c,d,0);

   if (i==0) dian(b,a,c,d,0);

   if (i==0) dian(c,b,a,d,0);

   if (i==0) dian(d,a,b,c,0);

  }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: