
#include<cmath>
using namespace std
#define N 30
typedef struct//定义点的结构体
{
int x,y
}Point
class point
{
private:
Point *v
public:
int distance(Point i,Point j)//计算两点的距离
int w(Point i,Point j,Point k) //计算三条边的长度之和
void minWeightTriangulation(int n,int t[][N],int s[][N]) //用动态规划计算最优值
void print(int s[][N],int i,int j) //输出
}
int point::distance(Point i,Point j)
{
int s=(i.x-j.x)*(i.x-j.x)+(i.y-i.y)*(i.y-i.y)
return sqrt(s)
}
int point::w(Point i,Point j,Point k)
{
return distance(i,j)+distance(j,k)+distance(i,k)
}
void point::minWeightTriangulation(int n,int t[][N],int s[][N])//用动态规划计算最优值
{
int i=0
int r=0
int k=0
for(i=1i<=ni++) t[i][i]=0
for(r=2r<=nr++)
for(i=1i<=n-r+1i++)
{
int j=i+r-1
t[i][j]=t[i+1][j]+w(v[i-1],v[i],v[j])
s[i][j]=i
for(k=i+1k<jk++)
{
int u=t[i][k]+t[k+1][j]+w(v[i-1],v[k],v[j])
if(u<t[i][j])
{
t[i][j]=u
s[i][j]=k
}
}
}
}
void point::print(int s[][N],int i,int j)
{
if(i==j)
return
print(s,i,s[i][j])
print(s,s[i][j]+1,j)
cout<<"三角行:v"<<i-1<<"v"<<s[i][j]<<"v"<<j<<endl
}
int main()
{
int n,i
Point v[N]={0,0}
point triangle
int t[N][N],s[N][N]
cout<<"输入多边形的顶点数:"
cin>>n
for(i=0i<ni++)
{
cout<<"输入第"<<i+1<<"点的坐标:"
cin>>v[i].x>>v[i].y
}
triangle.minWeightTriangulation(n,t,s)
triangle.print(s,1,n)
return 0
}
安装 QT 4.6.31.安装MinGW,C:\MinGW\bin添加到环境变量。
2.下载 QT 最新版本 4.6.3
3.运行 QT 的安装程序,忽视关于版本兼容性的报警信息
4.打开 Visual Studio的命令提示窗口
cd c:\QT\4.6.3
configure -platform win32-msvc2008
5.configure 完成后,输入 nmake,大概等待5个小时。
6.将 C:\Qt\4.6.3\bin添加到环境变量中
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)