24点回溯法实现
来源:互联网 发布:网络英语课程哪个好 编辑:程序博客网 时间:2024/06/17 19:00
// test11.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "iostream"
using namespace std;
int i=0;
void back(float a,float b,float c,float d,int j);
void add(float a,float b,float c,float d,int j)
{
if ((a*b!=0)&&(j<4)&&(i!=1))
{
back(a+b,c,d,0,j+1);
if (i==1)
cout<<(a+b)<<"="<<a<<"+"<<b<<endl;
}
}
void sub(float a,float b,float c,float d,int j)
{
if ((a*b!=0)&&(j<4)&&(i!=1))
{
back(a-b,c,d,0,j+1);
back(b-a,c,d,0,j+1);
if (i==1)
cout<<(a-b)<<"="<<a<<"-"<<b<<endl;
}
}
void mul(float a,float b,float c,float d,int j)
{
if ((a*b!=0)&&(j<4)&&(i!=1))
{
back(a*b,c,d,0,j+1);
if (i==1)
cout<<(a*b)<<"="<<a<<"*"<<b<<endl;
}
}
void divi(float a,float b,float c,float d,int j)
{
if ((a*b!=0)&&(j<4)&&(i!=1))
{
back(a/b,c,d,0,j+1);
if (i==1)
cout<<(a/b)<<"="<<a<<"/"<<b<<endl;
}
}
void back(float a,float b,float c,float d,int j)
{
add(a,b,c,d,j);
mul(a,b,c,d,j);
sub(a,d,b,c,j);
divi(a,d,b,c,j);
add(a,c,b,d,j);
mul(a,c,b,d,j);
add(a,d,c,b,j);
mul(a,d,c,b,j);
sub(a,b,c,d,j);
divi(a,b,c,d,j);
sub(b,a,c,d,j);
divi(b,a,c,d,j);
sub(d,a,b,c,j);
divi(d,a,b,c,j);
sub(a,c,b,d,j);
divi(a,c,b,d,j);
if ((j==3)&&(a+b+c+d==24))
i=1;
}
void main()
{
float a,b,c,d;
printf("input 4 num\n");
scanf("%f%f%f%f",&a,&b,&c,&d);
if (i==0) back(a,b,c,d,0);
//if (i==0) back(b,a,c,d,0);
//if (i==0) back(c,b,a,d,0);
//if (i==0) back(d,a,b,c,0);
}
//
#include "stdafx.h"
#include "iostream"
using namespace std;
int i=0;
void back(float a,float b,float c,float d,int j);
void add(float a,float b,float c,float d,int j)
{
if ((a*b!=0)&&(j<4)&&(i!=1))
{
back(a+b,c,d,0,j+1);
if (i==1)
cout<<(a+b)<<"="<<a<<"+"<<b<<endl;
}
}
void sub(float a,float b,float c,float d,int j)
{
if ((a*b!=0)&&(j<4)&&(i!=1))
{
back(a-b,c,d,0,j+1);
back(b-a,c,d,0,j+1);
if (i==1)
cout<<(a-b)<<"="<<a<<"-"<<b<<endl;
}
}
void mul(float a,float b,float c,float d,int j)
{
if ((a*b!=0)&&(j<4)&&(i!=1))
{
back(a*b,c,d,0,j+1);
if (i==1)
cout<<(a*b)<<"="<<a<<"*"<<b<<endl;
}
}
void divi(float a,float b,float c,float d,int j)
{
if ((a*b!=0)&&(j<4)&&(i!=1))
{
back(a/b,c,d,0,j+1);
if (i==1)
cout<<(a/b)<<"="<<a<<"/"<<b<<endl;
}
}
void back(float a,float b,float c,float d,int j)
{
add(a,b,c,d,j);
mul(a,b,c,d,j);
sub(a,d,b,c,j);
divi(a,d,b,c,j);
add(a,c,b,d,j);
mul(a,c,b,d,j);
add(a,d,c,b,j);
mul(a,d,c,b,j);
sub(a,b,c,d,j);
divi(a,b,c,d,j);
sub(b,a,c,d,j);
divi(b,a,c,d,j);
sub(d,a,b,c,j);
divi(d,a,b,c,j);
sub(a,c,b,d,j);
divi(a,c,b,d,j);
if ((j==3)&&(a+b+c+d==24))
i=1;
}
void main()
{
float a,b,c,d;
printf("input 4 num\n");
scanf("%f%f%f%f",&a,&b,&c,&d);
if (i==0) back(a,b,c,d,0);
//if (i==0) back(b,a,c,d,0);
//if (i==0) back(c,b,a,d,0);
//if (i==0) back(d,a,b,c,0);
}
- 24点回溯法实现
- 算24点-回溯法
- 24点游戏的回溯实现
- [深搜回溯]24点
- 回溯法实现
- 回溯法的实现
- 回溯法实现格雷码
- 回溯法实现邮票问题
- 回溯法实现全排列
- 回溯法实现连连看
- n皇后问题回溯法---java图形界面实现回溯过程
- 算法分析与设计实验三 回溯法 24点问题 n皇后问题
- hihocoder 1304 : 搜索一·24点(DFS+回溯)
- OD用栈回溯法找程序流程点
- 车厢调度(回溯法)递归实现
- TSP问题之回溯法 cpp实现
- N皇后问题的回溯法实现
- 回溯法之彩票问题的实现
- 2011-10-12 新闻发布系统2
- Android Layout中使用include标签实现UI布局重用
- Step by Step WebMatrix网站开发之三:Razor语法之一
- 正则表达式删除HTML标签
- open和add file to project功能导致VC++6.0程序崩溃的解决方法
- 24点回溯法实现
- odata mvc wcf调用方法
- 对于非数据库字段的查询过滤以及app_query.append的用法
- C入门:简单的win32线程
- 测试nand flash的小脚本
- 要养成良好的书写Sql的习惯
- Linux安装软件有关的命令(dpkg 安装deb包)
- sap --- ABAP 内表(internal table) 标题行(header line) 工作区(work area) 简介
- 页面上的go to top 按钮的实现