本文主要是介绍poj 2718(搜索+剪枝)C语言实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意:给你一串数字(不重复,且数字的个数在2-10之间),组成2个数字,求这2个数字差的绝对值的最小值,(其中不可以把0放在第一位比如一串数字0,2,4,5,不可以组成02,45这2个数。但可以组成20,45)
思路:递归全排列。然后前后分成2部分,计算前后2部分大小和差值,再和min比较,如果小于,更新min的值。
剪枝(c++好像不用剪枝,直接用排列函数,暴力解就可以了,但是C不行)
#include<stdio.h>
#include<math.h>
int p[6]={1,10,100,1000,10000,100000};
int vis[10];
int num[10],s[10];
int k,min=10000000;
void dfs(int co)
{
int i,j,a=0,b=0,c=0;
if(co==k)<
这篇关于poj 2718(搜索+剪枝)C语言实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!