b972 - 1.任務一->接力賽
題目描述
題目要求計算 t 個組在 n 個關卡中的總時間,並按照時間由小到大的順序輸出每個組的總時間。輸入格式為 n t,後續 n 行每行包含 t 個時間,格式為 m:s (分鐘:秒)。
解題思路
程式首先讀取 n 和 t 的值。然後,使用巢狀迴圈讀取每個組在每個關卡的花費時間,並將其轉換成分鐘數,加到 total 陣列中。total 陣列的第 j 個元素儲存第 j 組的總時間(以秒為單位)。
接著,程式使用冒泡排序演算法對 total 陣列進行排序,確保時間由小到大排列。最後,程式使用迴圈輸出排序後的 total 陣列中的每個元素。
複雜度分析
- 時間複雜度: O(n * t * t) (由於使用了巢狀迴圈讀取輸入和冒泡排序)
- 空間複雜度: O(t) (用於儲存每個組的總時間)
程式碼
#include <stdlib.h>
#include <stdio.h>
int main(){
int n, t;
while (scanf("%d%d",&n,&t) != EOF) {
int total[20] = {0};
int m, s;
int i, j;
for (i = 0; i < n; i++)
for (j = 0; j < t; j++) {
scanf("%d:%d", &m, &s);
total[j] += (m * 60) + s;
}
for (i=0;i<t-1;i++)
for (j=i+1;j<t;j++) {
if (total[i] > total[j]) {
total[i]^=total[j];
total[j]^=total[i];
total[i]^=total[j];
}
}
for (i = 0; i < t; i++)
printf("%d\n", total[i]);
}
}