題目敘述
每筆資料有兩個數字N和P,N代表一組有幾個人,P代表參賽選手的戰力 (均為個位數)。分組的機制是由右往左排,不一定每一組都會有N個人。要求輸出戰力總和最高的組別的編號 (由右往左分組的話為第幾組) 和戰力總和。
範例輸入 #1
1 369
範例輸出 #1
1 9
範例輸入 #2
2 193426
範例輸出 #2
3 10
範例輸入 #3
5 10121315
範例輸出 #3
1 12
範例輸入 #4
4 12344321
範例輸出 #4
2 10
解題思路
可以將P使用字串的方式存起來,因為題目有講最多不會超過9位選手,所以可以使用reverse不用擔心會TLE,將字串反轉之後就使用For迴圈將每一個字元做判斷並且找出最大戰力總和的組別。
解題程式碼如下 (僅供參考):
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
cin.sync_with_stdio(0);
cin.tie(0);
int N;
string str;
cin >> N;
cin >> str;
reverse(str.begin(), str.end());
int count = 0, sum = 0, max = -999, team, cnt = 0;
for (int i = 0; i<str.length(); i++)
{
sum += int(str[i] - '0');
count++;
if (count == N || i == str.length()-1)
{
count = 0;
cnt++;
if (sum >= max)
{
max = sum;
team = cnt;
}
sum = 0;
}
}
cout << team << " " << max << endl;
}
留言
張貼留言