- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最短线路连接方法
// 最短线路连接方法.cpp : Defines the entry point for the console application.
//注:本程序不包含星形连接方式.事实上,应该普遍考虑神经网络的连接方式.并且由于递归调用的固有缺陷,使运算量非常大,输入的点数不可太多.
#include stdio.h
#includemath.h
#includestdlib.h
#define N 50 //限制点数不超过N.
int main(int argc, char* argv[])
{
void distance(double d[][N],double a[][2],int n);//作用是使d[i][j]代表第i、j两个点之间的距离,以便直接引用其元素,减少运算量.
double sum(int b[],double d[][N],int n);//用来计算按照某一连接方式,线路的总长度.
void fn(int b[],double d[][N],double*p,int c[],int j,int n);/*将各点的序号排序,并通过指针操控*p=s以及主函数中的int c[].其中
s用来存储前边排列的最短线路长度,c[]用来存储与之相应的点的序号*/
int n,i,b[N],c[N]; //b[N]用来存放点的序号,以后排序即对此序列进行操作.
double a[N][2],d[N][N],s,*p=s; //a[N][2]用来存储各点的坐标,d[i][j]=d[j][i]表示i、j两点之间的距离.
printf(请输入点数:\n);
scanf(%d,n);
printf(输入各点的坐标(平面坐标):\n);
for(i=0;in;i++) //循环的同时,初步给b[i]、c[i]赋值.
{
scanf(%lf%lf,a[i][0],a[i][1]);
b[i]=c[i]=i;
}
distance(d,a,n); //利用a[N][2]提供的各点的坐标信息,给方阵d各元素赋值,使d[i][j]代表i、j两点间的距离.
*p=sum(b,d,n); //给s=*p赋初值.
fn(b,d,p,c,0,n); //排序,并最终给出最短路线长s,以及相应的连接方式.
printf(最短线路长为%lf\n其顺次连接方式为:\n,*p);
for(i=0;in;i++)
printf((%lf,%lf),,a[c[i]][0],a[c[i]][1]);
FILE*fp;
fp=fopen(D:\\link.dat,w);
fprintf(fp,%lf %lf\n,a[c[0]][0],a[c[0]][1]);
for(i=1;in;i++)
fprintf(fp,%lf %lf\n,a[c[i]][0],a[c[i]][1]);
fclose(fp);
printf(\nThis file has been saved.\n);
return 0;
}
void distance(double d[][N],double a[][2],int n) //使d[i][j]=d[j][i]表示i、j两点间的距离.
{
int i,j;
for(i=0;in;i++)
for(j=0;j=i;j++)
d[i][j]=d[j][i]=pow(pow(a[i][0]-a[j][0],2)+pow(a[i][1]-a[j][1],2),0.5);
}
double sum(int b[],double d[][N],int n) //计算按照某一连接方式,线路的长度.
{
int i;
double s=0;
for(i=0;in-1;i++)
s+=d[b[i]][b[i+1]];
return s;
}
void fn(int b[],double d[][N],double*p,int c[],int j,int n)//调用函数并且利用指针,既不失独立性,又能对函数外的变量进行操控.
{
int k,t;
if(j==n)
{
if(*psum(b,d,n))
{
*p=sum(b,d,n);
for(t=0;tn;t++)
c[t]=b[t];
}
}
for(k=j;kn;k++)
{
t=b[j];
b[j]=b[k];
b[k]=t;
fn(b,d,p,c,j+1,n);
t=b[j];
b[j]=b[k];
b[k]=t;
}
}
您可能关注的文档
最近下载
- 《混凝土结构加固设计规范》GB50367.pdf VIP
- 《精神疾病诊断与统计手册》DSM5.PDF VIP
- 2冷疗技术15课件讲解.pptx VIP
- 海姆立克急救法操作考核标准.doc VIP
- JJG 195-2019 连续累计自动衡器(皮带秤).pdf VIP
- 专项治理整改落实及长效机制建设情况报告().pdf VIP
- TD∕T 1087-2023 主体功能区优化完善技术指南.pdf
- (完整word版)数独题目100题(可打印).doc VIP
- 0604-会计专业国家技能人才培养工学一体化课程标准(试用).docx VIP
- 04.汉杂事秘辛.一卷.汉.阙名撰.明崇祯时期汲古阁刊本.pdf VIP
文档评论(0)