C++实现回溯
来源:互联网 发布:淘宝货比三家什么意思 编辑:程序博客网 时间:2024/05/23 11:46
#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);
}
- 回溯法 实现 排列组合(C 语言版本)
- 迷宫问题--非递归回溯 C语言实现
- 迷宫问题--非递归回溯 C语言实现
- 回溯法-八皇后问题之C实现
- C#WPF实现回溯算法解决八皇后问题
- 回溯算法的一些案例分析(c代码实现)
- 回溯法之0-1背包问题(C实现)
- c++回溯法实现工作分配问题
- 回溯法实现
- 回溯法的实现
- 实现回溯法求走迷宫
- C++实现回溯
- 回溯法实现格雷码
- C/C++编程小练习 八皇后问题(回溯算法实现)
- 01背包问题(用c语言实现)-回溯法求解
- 全排列问题(c语言实现)回溯法 排列树
- c 装载问题 回溯法
- 拉丁矩阵 回溯 c java
- jQuery&HTML5 UI框架Ignite UI 13.2新功能大揭秘(二)
- 安卓蓝牙BLE开发之返回错误类型
- 经典问题的回溯算法
- 如何判断程序是否第一次运行
- Java中的String数据类型
- C++实现回溯
- css position
- 白话经典算法系列之六 快速排序 快速搞定
- Eclipse安装SVN插件
- Struts2学习记录
- 求 N 皇后问题回溯算法
- perl的默认版本切换
- SQLlite 转义
- ganglia之gmetad响应慢及数据延迟的控制和缓解(hadoop相关监控)