# Greedy# Array# Conditional Logic

e807 - 2.降雨量統計 (Rainfall statistics)

🔗 前往 ZeroJudge 原題

題目描述

題目要求根據一週七天的每日四個時段的降雨量資料,找出降雨量最多的日子以及降雨量最多的時段。輸入為七行,每行四個浮點數,分別代表上午、下午、晚間和清晨的降雨量。輸出包含降雨量最多的日子(1-7)和降雨量最多的時段(morning, afternoon, night, early morning)。

解題思路

程式碼使用一個二維陣列 a[7][4] 儲存每日四個時段的降雨量。程式遍歷每一天,計算每日的總降雨量,並更新最大降雨量和對應的日期。同時,程式也計算每個時段的總降雨量,並找出最大時段降雨量和對應的時段。最後,程式輸出最大降雨量對應的日期和最大時段降雨量對應的時段。

複雜度分析

  • 時間複雜度: O(7 * 4) = O(1)
  • 空間複雜度: O(7 * 4) = O(1)

程式碼

#include <iostream>
using namespace std;
double a[7][4],maxa=0,di=0,M,A,N,E,maxb;
int main(){
	for(int i=0;i<7;++i){
		double diy=0;
		for(int j=0;j<4;++j){
			cin >> a[i][j];
			diy+=a[i][j];
			if(diy>maxa){
				maxa=diy;
				di=i;
			}
		}
		M+=a[i][0];
		A+=a[i][1];
		N+=a[i][2];
		E+=a[i][3];
	}
	cout << di+1 << "\n";
	maxb=max(max(M,A),max(N,E));
	if(maxb==M){
		cout << "morning";
	}
	else if(maxb==A){
		cout << "afternoon";
	}
	else if(maxb==N){
		cout << "night";
	}
	else if(maxb==E){
		cout << "early morning";
	}
}

Discussion