開啟章節選單
遊戲選角
題目說明
有 個角色,每個角色有攻擊力和防禦力。 角色的能力值是攻擊力和防禦力的平方和,輸出能力值第二大的攻擊力和防禦力數值。
解題過程
首先宣告整數變數 n 並輸入,在宣告 陣列 a
int n; cin >> n; vector<pair<int, int>>a;
輸入 x, y 並用 make_pair
放在陣列 a 後面
for(int i = 0; i < n; i++) { int x, y; cin >> x >> y; a.push_back(make_pair(x, y)); }
使用內建函式 sort
sort(a.begin(), a.end(), LESS);
在 main
函式前寫比較函式 LESS , 比較 a 的攻擊力平方加上 a 的防禦力平方與 b 的攻擊力平方加上 b 的防禦力平方
int LESS(pair<int, int>a,pair<int, int>b) { return pow(a.first, 2)+ pow(a.second, 2) > pow(b.first, 2)+ pow(b.second, 2); }
最後在輸出第二大的角色
cout << a[1].first << ' ' << a[1].second;
程式就完成了!
完整的程式碼如下
#include <bits/stdc++.h> using namespace std; int LESS(pair<int, int>a,pair<int, int>b) { return pow(a.first, 2)+ pow(a.second, 2) > pow(b.first, 2)+ pow(b.second, 2); } int main() { int n; cin >> n; vector<pair<int, int>>a; for(int i = 0; i < n; i++) { int x, y; cin >> x >> y; a.push_back(make_pair(x, y)); } sort(a.begin(), a.end(), LESS); cout << a[1].first << ' ' << a[1].second; return 0; }