首页 > 代码库 > 头条校招 编程第一题
头条校招 编程第一题
头条的2017校招开始了!为了这次校招,略去!
简单的思路就是排序,然后数就行了。刚开始写的很简单,没考虑这样的情况比如(10,30,50),10和30之间可以插入20满足条件,然后这个例子的结果应该是3.我当时没有做出来!后来跟师姐简单讨论下,说是简单排序后,每3个3个检查一下不就可以了么,我恍然大悟,原来可以这样,我还以为很复杂呢!结束后我写了一下,不知道结果对不对。
1 #include<bits/stdc++.h> 2 #define pb push_back 3 #define FOR(i, n) for (int i = 0; i < (int)n; ++i) 4 #define dbg(x) cout << #x << " at line " << __LINE__ << " is: " << x << endl 5 typedef long long ll; 6 using namespace std; 7 typedef pair<int, int> pii; 8 const int maxn = 1e3 + 10; 9 void solve() {10 int n;11 cin >> n;12 if(n == 0) {13 cout << 0 << endl;return;14 }15 if(n == 1) {16 cout << 2 << endl; return;17 }18 vector<int> a(n);19 for (int i = 0; i < n; i++) cin >> a[i];20 sort(a.begin(), a.end());21 int cnt = 0;22 int res = 0;23 for (int i = 0; i < n; i++) {24 //cout << i <<endl;25 if(i + 2 < n) {26 if(a[i + 2] - a[i] <= 20) {i += 2;}27 else if(a[i + 1] - a[i] <= 20) {28 res += 1;29 i += 1;30 } else {31 res += 2;32 }33 } else {34 if(i + 1 < n) {35 if(a[i + 1] - a[i] <= 20) {res++;}36 else res += 4;37 i++;38 } else {39 res += 2;40 }41 }42 }43 cout << res << endl;44 45 }46 int main() {47 // freopen("data", "r", stdin);48 //freopen("test.out", "w", stdout);49 //int _ = 20;50 //while(_--)51 solve();52 return 0;53 }
头条校招 编程第一题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。