#12308: C++ map 解法


Sean64 (Sean @ https://sean.cat/)

學校 : 國立交通大學
編號 : 59159
來源 : [140.113.231.99]
最後登入時間 :
2022-07-04 01:47:49
d244. 一堆石頭 | From: [114.34.119.217] | 發表日期 : 2017-07-01 17:58

非最佳解 QQ
AC (0.1s, 296KB)

 

#include <stdlib.h>
#include <iostream>
#include <unordered_map>

using namespace std;

int main() {
    int n;
    unordered_map<int, int> rock;   // 用 rock[x] = y
    while (cin >> n) {
        unordered_map<int, int>::const_iterator got = rock.find(n);   // 尋找是否存在
        if (got == rock.end()) {   // 不存在
            rock[n] = 1;   // 建新的
        } else {
            rock[n]++;   // 數量 +1
        }
    }

    unordered_map<int, int>::const_iterator iter;
    for (iter = rock.begin(); iter!=rock.end(); iter++) {   // 類似 foreach
        if (iter->second % 3) {   // 如果除 3 有餘數
            cout << iter->first;   // 輸出 key
            return 0;
        }
    }
    return 0;
}
 
#17254: Re:C++ map 解法


0822_137934 (14306)

學校 : 臺北市私立延平高級中學
編號 : 60259
來源 : [119.14.210.98]
最後登入時間 :
2022-12-27 23:22:35
d244. 一堆石頭 | From: [58.114.176.100] | 發表日期 : 2019-03-31 11:48

非最佳解 QQ
AC (0.1s, 296KB)

 

#include 
#include
#include

using namespace std;

int main() {
    int n;
    unordered_map<int, int> rock;   // 用 rock[x] = y
    while (cin >> n) {
        unordered_map<int, int>::const_iterator got = rock.find(n);   // 尋找是否存在
        if (got == rock.end()) {   // 不存在
            rock[n] = 1;   // 建新的
        } else {
            rock[n]++;   // 數量 +1
        }
    }

    unordered_map<int, int>::const_iterator iter;
    for (iter = rock.begin(); iter!=rock.end(); iter++) {   // 類似 foreach
        if (iter->second % 3) {   // 如果除 3 有餘數
            cout << iter->first;   // 輸出 key
            return 0;
        }
    }
    return 0;
}

想請教一下,如果不用stringstream來處理,是如何知道輸入測資何時結束的


 
#22287: Re:C++ map 解法


s10806226@smail.ycsh.tp.edu.tw (Eri)

學校 : 臺北市立永春高級中學
編號 : 108040
來源 : [101.3.116.101]
最後登入時間 :
2022-05-11 14:14:13
d244. 一堆石頭 | From: [219.91.14.225] | 發表日期 : 2020-08-21 23:18

非最佳解 QQ
AC (0.1s, 296KB)

 

#include 
#include
#include

using namespace std;

int main() {
    int n;
    unordered_map<int, int> rock;   // 用 rock[x] = y
    while (cin >> n) {
        unordered_map<int, int>::const_iterator got = rock.find(n);   // 尋找是否存在
        if (got == rock.end()) {   // 不存在
            rock[n] = 1;   // 建新的
        } else {
            rock[n]++;   // 數量 +1
        }
    }

    unordered_map<int, int>::const_iterator iter;
    for (iter = rock.begin(); iter!=rock.end(); iter++) {   // 類似 foreach
        if (iter->second % 3) {   // 如果除 3 有餘數
            cout << iter->first;   // 輸出 key
            return 0;
        }
    }
    return 0;
}

想請教一下,如果不用stringstream來處理,是如何知道輸入測資何時結束的


 

一般的測資方式在輸入所有的資料完後會輸入EOF

但while loop 的 cin >> n 是不吃EOF的 所以會自動跳掉

 

如果要輸入EOF 可以使用ctrl+z



 
ZeroJudge Forum