首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

NYoj 806 HEIHEI的心情:簡單條件求和

     編輯:關於C

題目描述

計算 HEIHEI 某天的總心情值。規則:

  • 週一至週五:輸入上午、下午兩值,總和 = 上午 + 下午
  • 週六、週日:輸入上午、下午、晚上三值,總和 = 上午 + 下午 + 晚上

輸入輸出格式

  • 第一行:測試組數 t (1 ≤ t ≤ 100)
  • 每組:星期英文名 + 對應心情值
  • 輸出:每行一個總和

範例

輸入:
7
Sunday 21 11 71
Friday 27 44
Tuesday 29 34
Monday 13 18
Tuesday 73 5
Friday 35 85
Saturday 68 25 11

輸出:
103
71
63
31
78
120
104

解法思路

  1. 建立星期名陣列 week[7] 對應索引 0~6
  2. 讀入星期字串,比對索引
  3. 索引 < 5(週一~週五)讀兩數,否則讀三數
  4. 求和輸出

參考代碼

#include <stdio.h>
#include <string.h>

int main() {
    int t;
    char week[7][20] = {"Monday", "Tuesday", "Wednesday",
                        "Thursday", "Friday", "Saturday", "Sunday"};

    scanf("%d", &t);
    while (t--) {
        char day[20];
        int a, b, c;
        scanf("%s", day);

        for (int i = 0; i < 7; i++) {
            if (strcmp(day, week[i]) == 0) {
                if (i < 5) {            // Mon-Fri
                    scanf("%d %d", &a, &b);
                    printf("%d\n", a + b);
                } else {                // Sat, Sun
                    scanf("%d %d %d", &a, &b, &c);
                    printf("%d\n", a + b + c);
                }
                break;
            }
        }
    }
    return 0;
}

複雜度

  • 時間:O(t * 7) = O(t),常數極小
  • 空間:O(1)

優化備註

若追求極致速度,可用 switch 或哈希表(如 unordered_map)替代線性比對,但 t ≤ 100 時線性搜尋完全足夠。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved