码迷,mamicode.com
首页 > 其他好文 > 详细

北京理工大学复试上机--2009

时间:2020-03-22 01:14:10      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:VID   nbsp   ret   个数   单词   多次   啊啊啊   algorithm   open   

1、请输入字符串,最多输入4 个字符串,要求后输入的字符串排在前面,例如
输入:EricZ
输出:1=EricZ
输入:David
输出:1=David 2=EricZ
输入:Peter
输出:1=Peter 2=David 3=EricZ
输入:Alan
输出:1=Alan 2=Peter 3=David 4=EricZ
输入:Jane
输出:1=Jane 2=Alan 3=Peter 4=David
2、把上述最后结果保存到Name.txt中;
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main() {
    vector<string> v;
    string s;
    ofstream outfile;
    outfile.open("Name.txt");
    while(cin >> s) {
        outfile << s << endl;
        v.push_back(s);
        if(v.size() > 4) v.erase(v.begin());
        int num = 1;
        for(int i = v.size() - 1; i >= 0; i--) {
            cout << num++ << "=" << v[i] << " ";
            outfile << num - 1 << "=" << v[i] << " ";
        }
        cout << endl;
        outfile << endl;
    }
    outfile.close();
    return 0;
}
3、先输入一组数,然后输入其分组,按照分组统计出现次数并输出,参见样例。
输入: 输入个数n,接下来两行分别有n个数,第一行有n个数,第二行的n个数分别对应上一行每个数的分组,n不超过100。
输出: 输出格式参见样例,按从小到大排。
示例1
输入:
7
3 2 3 8 8 2 3
1 2 3 2 1 3 1
输出:
1={2=0,3=2,8=1}
2={2=1,3=0,8=1}
3={2=1,3=1,8=0}
#include <iostream>
#include <vector>
#include <map>
#include <set>
using namespace std;
int main() {
    int n;
    cin >> n;
    int arr[n], b[n];
    set<int> s;
    map<int, vector<int> > v;
    for(int i = 0; i < n; i++) {
        cin >> arr[i];
        s.insert(arr[i]);
    }
    for(int i = 0; i < n; i++) {
        cin >> b[i];
        v[b[i]].push_back(arr[i]);
    }
    for(int i = 0; i < n; i++) {
        if(v[b[i]].empty()) continue;
        map<int, int> mmp;
        for(int j = 0; j < v[b[i]].size(); j++) {
            mmp[v[b[i]][j]]++;
        }
        cout << b[i] << "={";
        int cnt = 0;
        for(auto k = s.begin(); k != s.end(); k++) {
            cout << *k << "=" << mmp[*k];
            cnt++;
            if(cnt < s.size()) cout << ",";
        }
        cout << "}" << endl;
        v[b[i]].clear();//防止多次输出,加了此清空操作,也可以前面用flag决定是否输出
    }
    return 0;
}
4、输入一个英文句子,把句子中的单词按出现次数按从多到少把单词和次数在屏幕上输出来,要求能识别英文句号和逗号,暂不要求识别其他符号。
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;

map<string, int> mm;

bool cmp(string s1, string s2) {
    return mm[s1] > mm[s2];
}

int main() {
    string s;
    while (getline(cin, s)) {
        string str;
        vector<string> v;
        for (int i = 0; i < s.length(); i++) {
            if (s[i] ==   || s[i] == , || s[i] == .) {
                if (str != "") {
                    mm[str]++;
                    v.push_back(str);
                    str = "";
                }
            }
            else
                str += tolower(s[i]);
        }
        sort(v.begin(), v.end(), cmp);
        map<string, int> op;
        for (auto it = v.begin(); it != v.end(); it++) {
            op[*it]++;
            if(op[*it] > 1) continue;
            cout << *it << " " << mm[*it] << endl;
        }
    }
    return 0;
}

PS:每次都有不同的烦,慌,加油啊啊啊啊啊啊!!!

北京理工大学复试上机--2009

标签:VID   nbsp   ret   个数   单词   多次   啊啊啊   algorithm   open   

原文地址:https://www.cnblogs.com/ache/p/12543439.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!