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

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

时间:2020-03-26 01:46:23      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:return   没有   end   i++   复试   cin   turn   class   示例   

1、系统中有最近打开文件的记录,现用整数表示打开的文件名,且只
显示最近3个打开的文件,输出文件序列.
示例:
输入:1输出:1
输入:2输出:2, 1
输入:3
输出:3, 2, 1
输入:4
输出:4,3,2
输入:1
输出:1,4,3
输入:4
输出:1,4, 3
输入:3
输出:1,4,3
#include <iostream>
#include <vector>
#include <map>
using namespace std;
int main() {
    int a[100], num[100] = {0}, n, i = 0, j;
    vector<int> v;
    map<int, int> m;
    while (scanf("%d", &n)) {
        if (n == 0) break;
        if (m[n] == 0) {
            v.push_back(n);
            m[n]++;
        }
        if (v.size() > 3) {
            m[v[0]] = 0;
            v.erase(v.begin());
        }
        for (i = v.size() - 1; i >= 0; i--) {
            cout << v[i];
            if (i > 0) cout << ",";
        }
    }
    return 0;
}
2、在第-题基础上,稍作改动,显示最新打开的文件.
示例:
输入:1
输出:1
输入:2
输出:2,1
输入:3
输出:3,2,1
输入:4
输出:4,3,2
输入:1输出:1,4,3
输入:4
输出:4,1,3
输入:3
输出:3,4,1
#include <iostream>
#include <vector>
#include <map>
using namespace std;
int main() {
    int a[100], num[100] = {0}, n, i = 0, j;
    vector<int> v, vv;
    map<int, int> m;
    while (scanf("%d", &n)) {
        if (n == 0) break;
        if (m[n] == 0) {
            v.push_back(n);
            m[n]++;
            n = 0;
            if (v.size() > 3) {
                m[v[0]] = 0;
                v.erase(v.begin());
            }
        }
        else {
            for (i = v.size() - 1; i >= 0; i--) {
                if (v[i] == n) {
                    v.erase(v.begin() + i);
                    v.push_back(n);
                }
            }
        }
        for (i = v.size() - 1; i >= 0; i--) {
            cout << v[i];
            if (i > 0) cout << ",";
        }
        cout << endl;
    }
    return 0;
}
3、求广义表的深度(实际就是括号匹配),示例:输入(c,((d,e),f),h)
输出:3
#include <iostream>
#include <vector>
#include <map>
using namespace std;
int main() {
    string s;
    while (cin >> s) {
        int cnt = 0, i, l, maxn = 0;
        l = s.length();
        for (i = 0; i < l; i++) {
            if (s[i] == () {
                cnt++;
                if (cnt > maxn)
                    maxn = cnt;
            }
            if (s[i] == )) cnt--;
        }
        cout << maxn << endl;
    }
    return 0;
}

PS: 总感觉这个第三题是不是没有这么简单啊? 扎实一点  踏实一点 

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

标签:return   没有   end   i++   复试   cin   turn   class   示例   

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

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