作业四1002
来源:互联网 发布:java部分中文乱码 编辑:程序博客网 时间:2024/06/03 21:19
题意:给一个数n,接着是n各点的坐标;求连接这n个点的连线的最小距离。
思路:并查集。用到find函数,merge函数,以及sqrt,还是图算法;
收获:练习了这个方法,喝上一道题不同的是这道题给出的是点的坐标。
感悟:不知道为什么老是超时,所以不是很开心。
超时代码:
#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>using namespace std;int bin[110];struct node{int s;int e;double d;}p[10001];int find(int x){ int r=x; while(bin[r]!=r) r=bin[r]; return r;}int merge(int x,int y){ int fx,fy; fx=find(x); fy=find(y); if(fx!=fy){ bin[fx]=fy; return 1; } return 0;}int cmp(node x,node y){ return x.d<y.d;}int main(){ int n,i,j; double x[110],y[110],s; while(scanf("%d",&n),n);{for(i=1;i<=110;i++) bin[i]=i; for(i=1;i<=n;i++) scanf("%lf%lf",&x[i],&y[i]); int k=1; for(i=1;i<=n;i++) for(j=i+1;j<=n;j++) { p[k].s=i; p[k].e=j; p[k].d=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])); k++; } sort(p,p+k,cmp); s=0.00; for(i=1;i<=k;i++) if(merge(p[i].s,p[i].e)) { s+=p[i].d; } printf("%.2lf\n",s);} return 0;}
AC :
#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>using namespace std;struct node{ int start; int end; double dis;}t[10010];int cmp(node a,node b){ return a.dis <b.dis ;}int per[110];int find(int x){ int r=x; while(r!=per[r]) r=per[r]; return r;}int join(int x,int y){ int fx=find(x); int fy=find(y); if(fx!=fy) { per[fx]=fy; return 1; } return 0;}int main(){ int m,n,i,j,p; double x[110],y[110]; while(scanf("%d",&n)!=EOF) { for(i=0;i<110;i++) per[i]=i; for(i=0;i<n;i++) scanf("%lf%lf",&x[i],&y[i]); int k=0; for(i=0;i<n;i++) for(j=i+1;j<n;j++) { t[k].start=i; t[k].end =j; t[k].dis =sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])); k++; } sort(t,t+k,cmp); double sum=0.00; for(i=0;i<k;i++) if(join(t[i].start,t[i].end)) sum=sum+t[i].dis; printf("%.2lf\n",sum); } return 0;}实在是找不出错误!!!!!!!!!!!
0 0
- 作业四1002
- 作业四
- 作业四
- 作业四
- 作业四
- 作业四
- 作业四
- 小结四及作业四
- 课后作业(四)坐标
- 作业三,四题
- 软件工程作业四
- 课堂作业四
- C++作业四
- c++上机作业四
- c++作业四
- C++作业四
- C++作业四
- 实验四课后作业
- LeakCanary 中文使用说明
- centos下安装nginx访问html目录下的文件时出现403或者file not found
- 长度是怎样炼成的(二)
- 使用JDBC连接数据库的步骤
- 如何在Android引用第三方字体文件?
- 作业四1002
- Android ListView使用BaseAdapter与ListView的优化
- 长度是怎样炼成的(三)
- Lab 4:尝试bootloader
- android之RxJava开发
- 【剑指offer】排序数组合并
- 微信分享到朋友圈失败,分享给朋友等正常
- TortoiseSVN 简单使用说明(老手请绕弯)
- 长度是怎样炼成的(四)