C++程式,用於查詢二價拍賣活動中的贏家和最終價格
假設我們有一個包含n個元素的陣列A。有一種特殊的拍賣型別,稱為二價拍賣。在常規拍賣中,n個競拍者進行競價,競價是競拍者願意支付的價格。拍賣結束時,每個競拍者都會秘密告知拍賣組織者他們願意支付的價格。之後,拍賣贏家是出價最高者。但在這裡,他支付的不是他提供的價格,而是其他參與者報價中的最高價格(二價拍賣)。A[i] 是第 i 個競拍者提供的價格。我們必須找到贏家以及他將支付的價格。所有提供的價格都是唯一的。
問題類別
資料結構中的陣列是特定型別元素的有限集合。陣列用於在連續的記憶體位置儲存相同型別的元素。陣列被分配一個特定的名稱,並在各種程式語言中透過該名稱進行引用。要訪問陣列的元素,需要索引。我們使用術語“name[i]”來訪問陣列“name”中位置“i”處的特定元素。各種資料結構,如棧、佇列、堆、優先順序佇列,都可以使用陣列實現。陣列上的操作包括插入、刪除、更新、遍歷、搜尋和排序操作。訪問下面的連結以瞭解更多資訊。
https://tutorialspoint.tw/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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP