贝壳找房08-10 算法岗部分题目及解答
贝壳找房算法岗题目及解答 2019-08-10
第三题:锯子和斧头轮流砍树问题。第一行输入树的个数n, 接下来的n行,每行分别输入三个数,分别代表用锯子和斧头砍该棵树的时间以及换工具砍树所需要的时间。已知第一棵树用斧头砍,求依次砍n棵树所需要的最少时间。题目给定案例:
输入:
3
20 40 20
10 4 25
90 100 5
输出:139
以下是我的代码,只通过了9%,但在本地测试很多都通过,不知道是否还有什么没考虑到,求大佬指教。
#include <iostream>
#include <vector>
#include <numeric>
#include <limits>
using namespace std;
int main() {
int n;
cin >> n;
int a, b, c;
vector<vector<int> > v; //保存输入的n组数据
for (int i = 0; i<n; i++) {
vector<int> v2;
cin >> a >> b >> c;
v2.push_back(a);
v2.push_back(b);
v2.push_back(c);
v.push_back(v2);
}
int res = 0;
res += v[0][1];
int pos = 1; //pos记录当前是斧头(1)还是锯子(0)
for (int i = 1; i<n; i++)
{
if (pos == 1 && v[i][pos] < v[i][pos - 1]) { res += v[i][pos]; continue; }
if (pos == 1 && v[i][pos] > v[i][pos - 1]) { res += v[i][pos - 1]; res += v[i][2]; pos = 0; continue;}
if (pos == 0 && v[i][pos]<v[i][pos + 1]) { res += v[i][pos]; continue; }
if (pos == 0 && v[i][pos] > v[i][pos + 1]) { res += v[i][pos + 1]; res += v[i][2]; pos = 1; continue; }
}
cout << res << endl;
return 0;
}
#贝壳找房##笔试题目##秋招##include <vector>
#include <numeric>
#include <limits>
using namespace std;
int main() {
int n;
cin >> n;
int a, b, c;
vector<vector<int> > v; //保存输入的n组数据
for (int i = 0; i<n; i++) {
vector<int> v2;
cin >> a >> b >> c;
v2.push_back(a);
v2.push_back(b);
v2.push_back(c);
v.push_back(v2);
}
int res = 0;
res += v[0][1];
int pos = 1; //pos记录当前是斧头(1)还是锯子(0)
for (int i = 1; i<n; i++)
{
if (pos == 1 && v[i][pos] < v[i][pos - 1]) { res += v[i][pos]; continue; }
if (pos == 1 && v[i][pos] > v[i][pos - 1]) { res += v[i][pos - 1]; res += v[i][2]; pos = 0; continue;}
if (pos == 0 && v[i][pos]<v[i][pos + 1]) { res += v[i][pos]; continue; }
if (pos == 0 && v[i][pos] > v[i][pos + 1]) { res += v[i][pos + 1]; res += v[i][2]; pos = 1; continue; }
}
cout << res << endl;
return 0;
}