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);
}
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);
}
相关文章推荐
- N皇后问题(递归+回溯)的C++实现
- 图着色问题 配色方案 C++实现 回溯法
- 哈密顿环求解 C++实现 回溯法
- c++实现回溯算法解决图的M着色问题
- n-皇后问题 C++实现 回溯法
- N皇后问题-回溯与递归-C++实现
- C++中“引用”的底层实现
- 插入排序的C++实现
- C++实现AVLTree
- C++实现万年历
- 雇佣问题原址排列给定数组(randomize In Place)-c++代码实现及运行实例结果
- C/C++知识要点5——智能指针原理及自定义实现
- C++完美实现Singleton模式
- 微软软件实现技术授课系列内容之二:C++ Best Coding Practice
- 粗糙集(Roug Set)属性约简源代码(C/C++实现)Part2 Set.cpp
- 最近在研究enigma2的代码,那叫个庞大,C/C++写中间件,上层应用全部用python实现,可以学习一下plugin的实现机制了.
- 【转】 [C++][Thread] 转:线程池原理及创建(C++实现)
- CRC(循环冗余码)校验即c++实现
- 一元线性回归模型与最小二乘法及其C++实现
- 算法复习-红黑树-c++实现