openjudge 距离排序

该博客介绍了如何使用冒泡排序对三维空间中的点进行距离排序。题目要求给出n个点两两之间的距离,并按由大到小的顺序输出。冒泡排序在这里用于处理数据,保证了排序的稳定性。文章强调了冒泡排序的特性以及在处理特殊情况时的注意事项,例如边界条件和相同距离点对的输出顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目题目:

1:距离排序
查看 提交 统计 提问
总时间限制: 1000ms 内存限制: 65536kB
描述
给出三维空间中的n个点(不超过10个),求出n个点两两之间的距离,并按距离由大到小依次输出两个点的坐标及它们之间的距离。
输入
输入包括两行,第一行包含一个整数n表示点的个数,第二行包含每个点的坐标(坐标都是整数)。点的坐标的范围是0到100,输入数据中不存在坐标相同的点。
输出
对于大小为n的输入数据,输出n*(n-1)/2行格式如下的距离信息:
(x1,y1,z1)-(x2,y2,z2)=距离
其中距离保留到数点后面2位。
(用cout输出时保留到小数点后2位的方法:cout<<fixed<<setprecision(2)<<x)
样例输入
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位的方法:cout<<

### 关于OpenJudge 1.10.10 单词排序解题思路 #### 题目描述 给定若干个由大小写字母组成的单词,要求按照字典顺序对这些单词进行升序排列,并去除重复项后依次输出。 #### 输入说明 输入包含多个单词,每个单词之间以空格分隔。需要注意的是,在某些测试案例中可能会出现除了字母之外的其他字符[^1]。 #### 输出说明 对于处理后的每一个不重复单词,均需单独占一行输出。 #### 解决方案分析 为了实现上述功能,可以采用如下方法: - 使用`std::set<string>`来存储读取到的字符串。由于C++标准库中的集合容器默认是以元素值作为键来进行二叉树结构管理的,因此可以直接利用其特性完成去重以及自动排序操作。 - 如果希望保留原始输入序列而仅做排序与唯一化,则可先将所有单词存入向量或其他线性表内;之后调用算法函数`sort()`配合自定义比较器(若有必要),再通过相邻元素对比的方式剔除连续相同的项目。 下面给出基于第二种方式的具体代码实例: ```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; int main(){ vector<string> words; string word; // 循环接收用户输入直到文件结束符EOF被触发 while (cin >> word){ words.push_back(word); } // 对整个数组范围内的元素执行快速排序,默认按ASCII码从小到大排 sort(words.begin(), words.end()); // 找出最后一个位置之前的不同元素数量 auto last = unique(words.begin(), words.end()); // 迭代访问从起始地址至last指针所指向的位置之间的有效区间 for(auto it = words.begin();it != last;++it){ cout << *it << endl; } } ``` 此程序片段能够有效地解决该类问题,同时考虑到可能存在的特殊字符情况[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值