北京理工大学复试上机--2014
Posted ache
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了北京理工大学复试上机--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: 总感觉这个第三题是不是没有这么简单啊? 扎实一点 踏实一点
以上是关于北京理工大学复试上机--2014的主要内容,如果未能解决你的问题,请参考以下文章