# Array# String# Conditional Statements

e508 - 11917 - Do Your Own Homework!

🔗 前往 ZeroJudge 原題

題目描述

題目描述了Soha需要完成作業,但時間有限。Sparrow可以幫助Soha完成作業,但Sparrow只接受特定的科目,並且每個科目需要一定的時間。題目要求判斷Sparrow是否能在Soha的時間限制內完成作業,或者在允許的遲交期限內完成。

解題思路

這題的解題思路是遍歷Sparrow可以接受的科目列表,找到Soha需要完成的科目。如果找到該科目,則判斷完成該科目所需的天數是否小於等於Soha的時間限制D。如果小於等於D,則輸出"Yesss"。如果大於D但小於等於D+5,則輸出"Late"。如果大於D+5,或者找不到該科目,則輸出"Do your own homework!"。

複雜度分析

  • 時間複雜度: O(N),其中 N 是 Sparrow 可以接受的科目數量。因為程式碼需要遍歷科目列表來查找特定的科目。
  • 空間複雜度: O(N),因為程式碼使用了一個大小為 N 的陣列 a 來儲存科目名稱,以及一個大小為 N 的陣列 b 來儲存完成每個科目所需的天數。

程式碼

#include <iostream>
using namespace std;
int main(){
	cin.tie(0); ios::sync_with_stdio(false);
	int t,n;
	cin >> t;
	for(int c=1;c<=t;++c){
		cin >> n;
		string a[n],x;
		int b[n]={0},d;
		for(int i=0;i<n;++i)
			cin >> a[i] >> b[i];
		cin >> d >> x;
		bool ans=0;
		cout << "Case " << c << ":";
		for(int i=0;i<n;++i){
			if(a[i]==x){
				if(b[i]<=d){
					ans=1;
					cout << " Yesss\n";
				}
				else if(b[i]<=d+5){
					ans=1;
					cout << " Late\n";
				}
				break;
			}
		}
		if(!ans)
			cout << " Do your own homework!\n";
	}
}

Discussion