教材是用的王晓东的《计算机算法设计与实现》第四版,c++版
一下是问题描述:
算法实现:
/**
*能确定一个正确的想法(即每种情况都能考虑到,然后找一个最简单而准确的方式表达出来)
*
**/ #include<iostream>//此问题没有要求相邻的圆必须相切
#include<math.h>
using namespace std;
class Circle{
friend float CirclePerm(int,float*);//找到最优排列
private:
float Center(int t);//计算横坐标
void Compute();//计算当前圆排列的长度
void Backtrack(int t);
float min,//最优值
*x,//当前圆排列圆心横坐标
*r; //当前元的半径
int n;//当前待排园的个数
};
template <class T>
void Swap(T a,T b)
{
T temp;
temp = a;
a = b;
b = temp;
}
//此问题没有要求相邻的圆必须相切 ——对于计算横坐标,肯定选最大值
float Circle::Center(int t)//t代表当前选的第t个圆
{
//计算当前所选园的圆心横坐标
float temp = 0.0;//第一个圆默认为0