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

HDU 1228 A + B 英文單詞數字映射與 map 容器應用

     編輯:C++ 入門

HDU 1228 A + B 題目解析

輸入格式為 "單詞 + 單詞 = ",每個單詞代表一位數字(zero 到 nine)。將兩個英文數字轉換為整數相加,輸出結果。輸入以 "zero + zero =" 結束。

map 容器映射方案

使用 map<string, int> 建立單詞到數字的映射。讀取第一個加號前的單詞構成第一個數,讀取等號前的單詞構成第二個數,利用字符串流處理輸入。

C++ 代碼實現

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <map>
using namespace std;

int main() {
    int a, b;
    string str1, str2;
    map<string, int> m;
    m["zero"] = 0; m["one"] = 1; m["two"] = 2; m["three"] = 3;
    m["four"] = 4; m["five"] = 5; m["six"] = 6; m["seven"] = 7;
    m["eight"] = 8; m["nine"] = 9;

    while (a + b) {
        a = 0; b = 0;
        while (cin >> str1 && str1 != "+")
            a = a * 10 + m[str1];
        while (cin >> str2 && str2 != "=")
            b = b * 10 + m[str2];
        if (a + b) printf("%d\n", a + b);
    }
    return 0;
}

關鍵技術點

  • map 實現 O(log n) 字符串到整數映射,n=10 時近似 O(1)
  • 流輸入 cin >> str 自動跳過空白字符
  • 短路求值 while (cin >> str1 && str1 != "+") 精確控制讀取邊界
  • 數字構建:a = a * 10 + m[str] 模擬多位數拼接

樣例驗證

輸入:one + two = → a=1, b=2 → 輸出 3
輸入:three four + five six = → a=34, b=56 → 輸出 90

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