問題:輸入一個n(2<=n<=100),代表參選人數,下一行輸入n個數字,每個數字代表每個候選人當前票數,票數m<10000,第一個數字是你自己的票數。要求輸出一個數字,表示你總共從后面的人身上至少拿幾票才能贏得選舉。
樣例輸入輸出:
輸入:
4
1 8 8 8
輸出:
6
--------------------------------------------------------------------------------------------------------------------------------------------------------------
我的思路是這樣的 每次判斷第一個是不是最大的,如果不是,就從后面人里面最大票數的摘一票。雖然不是最快的演算法,但是我實在不知道為什么會給WRONG ANSWER這樣的提示,測驗用例不通過。求指點
#include<iostream>
using namespace std;
bool isMax(int *p,int n) {
int temp = p[0];
for (int i = 1; i < n; i++) {
if (p[i] >= temp) { return false; }
}
return true;
}
int main() {
int n;
cin >> n;
int *hxzps = new int[n];
for (int i = 0; i < n; i++)cin >> hxzps[i];
int flag = 0;
for (int i = 0; i < n; i++) {
if (hxzps[i] > 0) { flag++; }
}
if (flag == 0) {
return 0;
}
int count=0;
int maxi;
while (!isMax(hxzps, n)) {
int temp = 0;
for (int i = 1; i < n; i++) {
if (hxzps[i] > temp) {
maxi = i;
temp = hxzps[i];
}
}
hxzps[0]++; count++;
hxzps[maxi]--;
}
cout << count << endl;
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/81045.html
標籤:基礎類
下一篇:如何實作桌面錄屏
