sicily 1050——5个数通过加减乘除运算得到目标数

/*采用DFS,求5个数可否加减乘除运算得到目标数,
     否则输出可得到的小于目标数的最大数
//回溯思路是这样的,5个数,先任意找2个数进行加减乘除,把这2个数运算后的结果当做一个数,按相同的方法搜下去  
//把4个数任取2个然后合并成3个,再继续搜下去  
*/

#include

using namespace std;

int flag=0;
long target,result;

long jia(long a, long b){ return a+b;}
long jian(long a, long b){ return a-b;}
long cheng(long a, long b){ return a*b;}
long chu(long a, long b)
{
	int temp;
	if(a < b){ temp=a; a=b; b=temp;}
	if ( b==0 || a%b!=0) return -1;
	return a/b;
}

void dfs(long* arr, int n)
{
	if(flag == 1) return;
	if(arr[0]<=target && result < arr[0]){
		result = arr[0];
		if(result == target){
			flag = 1;
			return;
		}
	}

	if(n == 1) return;

	int i,j,k,count;
	long temp[5];
	for(i=0; i> n;
	
	while(n--){
		for(i=0; i<5; i++)
			cin >> m[i];

		cin >> target;

		flag=0;
		result=-2000000000;
		for(i=0; i<5; i++){
			if(m[i] <= target && result < m[i])
				result = m[i];  //取最小值
		}
		dfs(m, 5);
		cout << result << endl;
	}

	return 0;
}

		

你可能感兴趣的:(sicily 1050——5个数通过加减乘除运算得到目标数)