请问123456789=100的这个思路是什么

来源:百度知道 编辑:UC知道 时间:2024/06/04 13:39:41
#include <math.h>
#include <iostream>
using namespace std;

#define Length 8

void factor(int n, int arr[], char arrSign[], int arrLength, int Result, int tmpResult, int tmpIndex)
{
if(n==-1)
{
Result += tmpResult;

if(Result==100)
{
for(int i=0;i<arrLength;i++)
{
cout<<arr[i];
if(arrSign[i]!=0)
cout<<arrSign[i];
}
cout<<arr[Length];
cout<<"=100"<<endl;
}
}
else
{
arrSign[n] = '-';
factor(n-1, arr, arrSign, arrLength, Result-tmpResult, arr[n], 1);

arrSign[n] = 0;
factor(n-1, arr, arrSign, arrLength, Result, tmpResult+arr[n]*(int)pow(10,tmpIndex), tmpIndex+1);

arrSign[n] = '+';
factor(n-1, arr, arrSign, arrLength, Result+tmpResult, arr[n], 1);
}
}

void main()
{
int a[]={1,2,3,4,5,6,7,8,9};

其本质是回溯法

递归法呀。就是把复杂的问题逐步简单化,最后得出结果。

要想求factor(n)只要求出factor(n-1)

要求factor(n-1)。只要求出factor(n-2)
直到最后,
只要求出factor(0)就行了。