小希的数表

news/2024/11/24 3:17:31/

题目描述

【问题描述】

Gardon 昨天给小希布置了一道作业,即根据一张由不超过 5000 的 N(3<=N<=100)个正整数组成的数表两两相加得到 N*(N-1)/2 个和,然后再将它们排序。例如,如果数表里含有四个数 1,3,4,9,那么正确答案是 4,5,7,10,12,13。小希做完作业以后出去玩了一阵,可是下午回家时发现原来的那张数表不见了,好在她做出的答案还在,你能帮助她根据她的答案计算出原来的数表么?

【输入形式】

包含多组数据,每组数据以一个 N 开头,接下来的一行有按照大小顺序排列的 N*(N-1)/2 个数,是小希完成的答案。文件最后以一个 0 结束。
假设输入保证解的存在性和唯一性。

【输出形式】

对于每组数据,输出原来的数表。它们也应当是按照顺序排列的。

【样例输入】

4
4 5 7 10 12 13
4
5 6 7 8 9 10
0
【样例输出】

1 3 4 9
2 3 4 6

思路分析

分析可知,该有序序列的第一项为a1+a2,第二项为a2+a3,a1<=(a1+a2)/2,依次取a1可能的值,将a1存入数组b,确定a1后可求出a2,a2也存入数组b,再从该有序序列中删除数组b中已有元素的加法组合,得到一个新的有序序列,该新有序序列的第一项为a1+a3,重复上述过程,若最后有序序列长度为0,则b数组中储存的即为最后结果;否则重新选取a1的值并求解。

代码

#include <bits/stdc++.h>
using namespace std;
void Clear(int* x, int y){for(int k = 0; k < y; k++)x[k] = 0;
}
int main(){int n;while(cin >> n && n != 0){int len = n*(n - 1)/2, top;int a[len], b[n];for(int i = 0; i < len; i++)cin >> a[i];				int maxm = a[0] / 2, maxn = a[len - 1] + 1;		for(int may = 1; may <= maxm; may++){vector<int> result(a, a + len);top = 0;Clear(b, n);b[top++] = may;while(top < n){b[top++] = result[0] - may;for(int t = 0; t < top - 1; t++){int dele = b[t] + b[top - 1];auto it = find(result.begin(), result.end(), dele);if(it != result.end())*it = maxn;//以赋值操作代替删除}sort(result.begin(), result.end());}if(count(result.begin(), result.end(), maxn) == len)break;}for(int i = 0; i < n; i++)cout << b[i] << ' ';cout << '\n';}return 0;
}

如果对各位看官有帮助不妨留下一个点赞 ̄ω ̄=。


http://www.ppmy.cn/news/283630.html

相关文章

小希的迷宫

小希的迷宫 上次Gardon的迷宫城堡小希玩了很久&#xff08;见Problem B&#xff09;&#xff0c;现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样&#xff0c;首先她认为所有的通道都应该是双向连通的&#xff0c;就是说如果有一个通道连通了房间A和B&#…

小希的

小希的迷宫-杭电地址 小希的迷宫Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 65877 Accepted Submission(s): 20676 problem Description 上次Gardon的迷宫城堡小希玩了很久&#xff08;见Problem B&#xff09;…

小希的新工作

【问题描述】 小希最近找到了大公司的客户经理的新工作&#xff0c;每天工作时间为 L 分钟&#xff0c;他主要为 n 个固定的高端客人服务&#xff0c;第 i 个客人会在第 ti 分钟到来&#xff0c;他需要为其服务 li 分钟&#xff0c;在此期间不会有其他客人到来。 他喜欢在工作的…

小希练打字

实验八 字符串—小希练打字 【问题描述】 小希打字太慢了&#xff0c;因此他在苦练打字技巧。他用了一个教学 App&#xff0c;可以一个个显示自己打出来的英文单词。 当小希输入一个词时&#xff0c;他需要花0.2 秒输入第一个字母。而对于接下来的每个字母&#xff0c;如果在标…

小希与火车

【问题描述】 春节期间小希计划乘坐火车去旅行。开始时&#xff0c;火车位于位置1&#xff0c;目的地在位置L。火车的速度是1单位长度/分钟&#xff08;也就是第1分钟火车在位置1&#xff0c;第2分钟在位置2&#xff0c;等等&#xff09;。中国人过年都喜欢挂灯笼&#xff0c;在…

spark安装部署

spark安装部署 需要指导私信 所有节点安装scala&#xff0c;安装scala需要安装openjdk-8-jre&#xff08;当前用户如果没有sudo权限可将其加入sudo组里&#xff09;,以ubuntu2204-LTS为例&#xff1a; $ sudo apt update $ sudo apt-get install openjdk-8-jre-headless -y (红…

【Python 继承和多态】零基础也能轻松掌握的学习路线与参考资料

Python 继承和多态是面向对象编程中非常关键的概念。继承是一种创建新类的方法&#xff0c;通过继承一个已有的类来创建新类。而多态则是指不同的对象以不同的方式对同一消息作出响应的能力。在这篇文章中&#xff0c;我们将为您介绍 Python 继承和多态的学习路线&#xff0c;并…

i510400f配什么主板性能最好 i5 10400f配什么主板性能最好

酷睿i5-10400F基于祖传的14nm制程工艺&#xff0c;全新的LGA 1200接口设计&#xff0c;拥有6核12线程&#xff0c;默认主频2.9Ghz&#xff0c;最大睿频4.3Ghz&#xff0c;三级缓存为12MB&#xff0c;不支持超频&#xff0c;设计功耗65W&#xff0c;无内置核心显卡 i510400f组装…