回溯算法:计算24点牌
1.将4个整数放入数组中
2.在数组中取两个数字的排列,共有 P(4,2) 种排列。对每一个排列,对 – * / 每一个运算符,
3.根据此排列的两个数字和运算符,计算结果
4.改表数组:将此排列的两个数字从数组中去除掉,将 2.1.1 计算的结果放入数组中
5.对新的数组,重复步骤 2
恢复数组:将此排列的两个数字加入数组中,将 2.1.1 计算的结果从数组中去除掉可见这是一个递归过程。步骤 2 就是递归函数。当数组中只剩下一个数字的时候,这就是表达式的最终结果,此时递归结束。
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
bool isFind = false;
int sum = 0;
void find(vector<double> &nums, int n)
{
//构造数组,因为回溯后加起来的数字减不回去
vector<double> tmp(nums.begin(), nums