头条校招 编程第一题
Posted y119777
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了头条校招 编程第一题相关的知识,希望对你有一定的参考价值。
头条的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 }
以上是关于头条校招 编程第一题的主要内容,如果未能解决你的问题,请参考以下文章