zoukankan      html  css  js  c++  java
  • 北京理工大学复试上机--2014

    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: 总感觉这个第三题是不是没有这么简单啊? 扎实一点  踏实一点 

  • 相关阅读:
    4 Apr 18 软件开发目录 logging模块的使用 序列化(Json, Pickle) os模块
    3 Apr 18 内置函数 列表生成式与生成器表达式 模块的使用之import 模块的使用之from…import…
    2 Apr 18 三元表达式 函数递归 匿名函数 内置函数
    30 Mar 18 迭代器 生成器 面向过程的编程
    29 Mar 18 函数 有参、无参装饰器
    28 Mar 18 函数
    27 Mar 18 函数的参数
    26 Mar 18 函数介绍
    23 Mar 18 文件处理
    22 Mar 18 补充数据类型+字符编码+文件处理
  • 原文地址:https://www.cnblogs.com/ache/p/12571737.html
Copyright © 2011-2022 走看看