C++程序,用于查找二价拍卖活动中的赢家和最终价格
假设我们有一个包含n个元素的数组A。有一种特殊的拍卖类型,称为二价拍卖。在常规拍卖中,n个竞拍者进行竞价,竞价是竞拍者愿意支付的价格。拍卖结束时,每个竞拍者都会秘密告知拍卖组织者他们愿意支付的价格。之后,拍卖赢家是出价最高者。但在这里,他支付的不是他提供的价格,而是其他参与者报价中的最高价格(二价拍卖)。A[i] 是第 i 个竞拍者提供的价格。我们必须找到赢家以及他将支付的价格。所有提供的价格都是唯一的。
问题类别
数据结构中的数组是特定类型元素的有限集合。数组用于在连续的内存位置存储相同类型的元素。数组被分配一个特定的名称,并在各种编程语言中通过该名称进行引用。要访问数组的元素,需要索引。我们使用术语“name[i]”来访问数组“name”中位置“i”处的特定元素。各种数据结构,如栈、队列、堆、优先级队列,都可以使用数组实现。数组上的操作包括插入、删除、更新、遍历、搜索和排序操作。访问下面的链接以了解更多信息。
https://tutorialspoint.com/data_structures_algorithms/array_data_structure.htm
因此,如果我们问题的输入类似于 A = [3, 8, 2, 9, 4, 14],则输出将是 5, 9,因为赢家在索引 5 处,提供的价格为 14,他将支付 9。
步骤
为了解决这个问题,我们将遵循以下步骤:
n := size of A i := index of the maximum element in A sort the array A l := A[n - 2] print i and l
示例
让我们看看以下实现以更好地理解:
#include <bits/stdc++.h> using namespace std; void solve(vector<int> A){ int n = A.size(); int i = max_element(A.begin(), A.end()) - A.begin(); sort(A.begin(), A.end()); int l = A[n - 2]; cout << i << ", " << l; } int main(){ vector<int> A = { 3, 8, 2, 9, 4, 14 }; solve(A); }
输入
{ 3, 8, 2, 9, 4, 14 }
输出
5, 9
广告