1. 程式人生 > >網易2016校招內推筆試程式設計題

網易2016校招內推筆試程式設計題

牛牛想嘗試一些新的料理,每個料理需要一些不同的材料,問完成所有的料理需要準備多少種不同的材料。

輸入描述:

每個輸入包含 1 個測試用例。每個測試用例的第 i 行,表示完成第 i 件料理需要哪些材料,各個材料用空格隔開,輸入只包含大寫英文字母和空格,輸入檔案不超過 50 行,每一行不超過 50 個字元。

輸出描述:

輸出一行一個數字表示完成所有料理需要多少種不同的材料。

示例1

輸入

BUTTER FLOUR
HONEY FLOUR EGG

輸出

4

好久沒更了,廢話少說,非常簡單的題目,只不過要用到一些STL的內容,知識有些遺忘

程式碼:
set版

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <map>
#include <cmath>
#include <set>
#include <vector>
using namespace std;
set<string>st;
int main()
{
    string s;
    int ans;
    while(cin>>s)
    {
        st.insert(s);
    }
    ans=st.size();
    cout<<ans<<endl;
    return 0;
}

map版

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>
#include <string>
#include <set>
#include <map>
using namespace std;
int main()
{
    string s;
    map<string,int>mp;
    int ans;
    mp.clear();
    ans=0;
    while(cin>>s)
    {
        if(mp.count(s)==0)
        {
            mp[s]=++ans;
        }
    }
    cout<<ans<<endl;
    return 0;
}

vector版

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
using namespace std;
int main()
{
    vector<string>v;
    char s[100];
    while(cin>>s)
    {
        v.push_back(s);
    }
    sort(v.begin(),v.end());
    vector<string>::iterator i = v.begin();
    for(i;i<v.end()-1;i++)
    {
        if(*i==*(i+1))
        {
            v.erase(i+1);
            i--;
        }
    }
    cout<<v.size()<<endl;
    return 0;
}