网站页面,海珠网站建设方案,美食网站开发毕业设计,备案 网站首页地址总时间限制: 1000ms 内存限制: 65536kB
描述
给出三维空间中的n个点#xff08;不超过10个#xff09;,求出n个点两两之间的距离,并按距离由大到小依次输出两个点的坐标及它们之间的距离。
输入
输入包括两行#xff0c;第一行包含一个整数n表示点的个数#xff0c;第二…总时间限制: 1000ms 内存限制: 65536kB
描述
给出三维空间中的n个点不超过10个,求出n个点两两之间的距离,并按距离由大到小依次输出两个点的坐标及它们之间的距离。
输入
输入包括两行第一行包含一个整数n表示点的个数第二行包含每个点的坐标(坐标都是整数)。点的坐标的范围是0到100输入数据中不存在坐标相同的点。
输出
对于大小为n的输入数据输出n*(n-1)/2行格式如下的距离信息 (x1,y1,z1)-(x2,y2,z2)距离 其中距离保留到数点后面2位。 (用cout输出时保留到小数点后2位的方法:cout
样例输入
4
0 0 0 1 0 0 1 1 0 1 1 1样例输出
(0,0,0)-(1,1,1)1.73
(0,0,0)-(1,1,0)1.41
(1,0,0)-(1,1,1)1.41
(0,0,0)-(1,0,0)1.00
(1,0,0)-(1,1,0)1.00
(1,1,0)-(1,1,1)1.00提示
用cout输出时保留到小数点后2位的方法:coutfixedsetprecision(2)x
注意
冒泡排序满足下面的性质,选择排序和快速排序(qsort或sort)需要对下面的情况进行额外处理 使用冒泡排序时要注意边界情况的处理,保证比较的两个数都在数组范围内
对于一行输出中的两个点(x1,y1,z1)和(x2,y2,z2)点(x1,y1,z1)在输入数据中应出现在点(x2,y2,z2)的前面。
比如输入
2
0 0 0 1 1 1输出是
(0,0,0)-(1,1,1)1.73但是如果输入
2
1 1 1 0 0 0输出应该是
(1,1,1)-(0,0,0)1.73如果有两对点p1,p2和p3,p4的距离相同则先输出在输入数据中靠前的点对。
比如输入
3
0 0 0 0 0 1 0 0 2输出是
(0,0,0)-(0,0,2)2.00
(0,0,0)-(0,0,1)1.00
(0,0,1)-(0,0,2)1.00如果输入变成
3
0 0 2 0 0 1 0 0 0则输出应该是
(0,0,2)-(0,0,0)2.00
(0,0,2)-(0,0,1)1.00
(0,0,1)-(0,0,0)1.00答案
#include stdio.h
#include math.h
typedef struct {int start[3];int end[3];double dis;int weight;
} points;
int main() {static int n, p0;static int a[10][4];static points point[1024], t;scanf(%d, n);for(int i 0; i n; i) {scanf(%d %d %d, a[i][0], a[i][1], a[i][2]);}for(int i 0; i n; i) {for(int j i1; j n; j) {point[p].start[0] a[i][0];point[p].start[1] a[i][1];point[p].start[2] a[i][2];point[p].end[0] a[j][0];point[p].end[1] a[j][1];point[p].end[2] a[j][2];point[p].dis sqrt((a[i][0]-a[j][0])*(a[i][0]-a[j][0])(a[i][1]-a[j][1])*(a[i][1]-a[j][1])(a[i][2]-a[j][2])*(a[i][2]-a[j][2]));point[p].weight p;p;}}for(int i 0; i p; i) {for(int j i1; j p; j) {if(point[i].dis point[j].dis) {t point[i];point[i] point[j];point[j] t;} else if(point[i].dis point[j].dis) {if(point[i].weight point[j].weight) {t point[i];point[i] point[j];point[j] t;}}}}for(int i 0; i p; i) {printf((%d,%d,%d)-(%d,%d,%d)%.2f\n, point[i].start[0], point[i].start[1], point[i].start[2], point[i].end[0], point[i].end[1], point[i].end[2], point[i].dis);}
}至于weight它的作用就只是增加一个权重罢了。