/* 试题编号:201912-2 试题名称:回收站选址 题目描述: 通过无人机航拍我们已经知晓了n处尚待清理的垃圾位置,其中第i(1<=i<=n)处的坐标为(xi,yi),保证所有的坐标均为整数。 我们希望在垃圾集中的地方建立些回收站。具体来说,对于一个位置(x,y)是否适合建立回收站,我们主要考虑以下几点: ·(x,y)必须是整数坐标,且该处存在垃圾; ·上下左右四个邻居位置,即(x,y+1)、(x,y-1)、(x+1,y)和(x-1,y)处,必须全部存在垃圾; ·进一步地,我们会对满足上述两个条件的选址进行评分,分数为不大于4的自然数,表示在(x±1,y±1)四个对角位置中有几处存在垃圾。 现在,请你统计一下每种得分的选址个数。 */ #include <iostream> #include <cstdio> #include <vector> #include <algorithm> using namespace std; class data { public: int x,y,n = -1; }; int main() { int n, x, y, cnt1, cnt2, out[5]{0}; vector<data> dat; cin >> n; dat.reserve(n); for (int i = 0; i < n; ++i) { data d; cin >> d.x >> d.y; dat.push_back(d); } for (auto& i: dat) { cnt1 = 0; cnt2 = 0; for (auto j: dat) { if(i.x == j.x && abs(i.y - j.y) == 1) cnt1++; else if(i.y == j.y && abs(i.x - j.x) == 1) cnt1++; else if(abs(i.x - j.x) == 1 && abs(i.y - j.y) == 1) cnt2++; } if (cnt1 == 4) { i.n == cnt2; out[cnt2]++; } } cout << out[0] << endl << out[1] << endl << out[2] << endl << out[3] << endl << out[4]; return 0; }
/* 试题编号: 201909-1 试题名称: 小明种苹果 题目描述 小明在他的果园里种了一些苹果树。为了保证苹果的品质,在种植过程中要进行若干轮疏果操作,也就是提前从树上把不好的苹果去掉。第一轮疏果操作开始前,小明记录了每棵树上苹果的个数。每轮疏果操作时,小明都记录了从每棵树上去掉的苹果个数。在最后一轮疏果操作结束后,请帮助小明统计相关的信息。 */ #include <iostream> #include <vector> using namespace std; int main() { int turns, treeNum, appleNum, T{0}, D{0}, E{0}; cin >> treeNum; vector<int> drop(treeNum, 0); for (int i = 0; i < treeNum; ++i) { vector<int> vt; cin >> turns; vt.resize(turns+1); vt[0] = turns; for (int j = 1; j <= turns; ++j) cin >> vt[j]; appleNum = vt[1]; for (int k = 2; k <= turns; ++k) { if (vt[k] <= 0) { appleNum += vt[k]; } else { drop[i] += appleNum - vt[k]; appleNum = vt[k]; } } T += appleNum; } for (int i = 0; i < treeNum; ++i) { if (drop[i] > 0) D++; if (drop[i] > 0 && drop[(i+1)%treeNum] > 0 && drop[(i+treeNum-1)%treeNum] > 0) E++; } cout << T << ‘ ‘ << D << ‘ ‘ << E; return 0; }
/* 试题编号:201903-2 试题名称:二十四点 【题目描述】 定义每一个游戏由4个从1-9的数字和3个四则运算符组成,保证四则运算符将数字两两隔开,不存在括号和其他字符,运算顺序按照四则运算顺序进行。其中加法用符号+表示,减法用符号-表示,乘法用小写字母x表示,除法用符号/表示。在游戏里除法为整除,例如2/3=0,3/2=1,4/2=2。 老师给了你n个游戏的解,请你编写程序验证每个游戏的结果是否为24。 */ #include <iostream> #include <stack> using namespace std; void culculate(stack<int> &nums, stack<char> &ops, bool tag) { int num2{nums.top()}; nums.pop(); int num1{nums.top()}; nums.pop(); int result; char op{ops.top()}; ops.pop(); switch(op) { case ‘+‘: result = num1 + num2; break; case ‘-‘: tag ? result = num1 - num2 : result = num2 - num1; break; case ‘x‘: result = num1 * num2; break; case ‘/‘: result = num1 / num2; break; } nums.push(result); } inline int priority(char op) { if (op == ‘+‘ || op == ‘-‘) return 1; else return 2; } int main() { string input; int n, result; stack<char> ops, ops2; stack<int> nums, nums2; cin >> n; for (int i = 0; i < n; ++i) { cin >> input; for (int i = 0; i < 7; ++i) { if (i % 2 == 0) { nums.push(input[i] - ‘0‘); if (!ops.empty() && priority(ops.top()) == 2) culculate(nums, ops, true); } else ops.push(input[i]); } while(!ops.empty()) { ops2.push(ops.top()); ops.pop(); } while(!nums.empty()) { nums2.push(nums.top()); nums.pop(); } while(!ops2.empty()) culculate(nums2, ops2, false); result = nums2.top(); nums2.pop(); if (result == 24) cout << "Yes" << endl; else cout << "No" << endl; } return 0; }
原文地址:https://www.cnblogs.com/joeyzhao/p/12286337.html
时间: 2024-10-06 07:21:14