链家2018春招C++工程师编程题题解

第一题:

set处理一下,输出set的容量就行

#include <bits/stdc++.h>

using namespace std;

int main()
{
    for (int n; cin >> n; ) {
        set<int> st;
        for (int i = 0, k; i < n; i++) {
            cin >> k;
            for (int j = 0, x; j < k; j++)
                cin >> x, st.insert(x);
        }
        cout << st.size() << endl;
    }
    return 0;
}

第二题:

转换下思路,如何保留更多的木条,1 2 3 5 8 ...这些木棍可以保留下来,那么这个问题就解决了。

#include <bits/stdc++.h>

using namespace std;

#define TOP 100000

int main()
{
    vector<int> dp(3);
    dp[1] = 1, dp[2] = 2;
    for (int i = 3; dp[i - 1] + dp[i - 2] <= TOP; i++)
        dp.push_back(dp[i - 1] + dp[i - 2]);
    for (int n; cin >> n; ) {
        auto it = lower_bound(dp.begin(), dp.end(), n);
        cout << *it - (it - dp.begin()) - (*it == n ? 0 : *it - n - 1)<< endl;
    }
    return 0;
}



CSDN博客会有详细解答和完整题目,待会会在讨论区发出来。
#春招##C++工程师#
全部评论
为什么考试还没结束就发答案
点赞 回复 分享
发布于 2018-04-08 20:25
#include <iostream>  using namespace std; int main() {     int i,n;     int count=0;     int a=2;     int b=3;     while (cin>>n) {         for(i=4;i<=n;i++){             if(i<a+b){                 count++;             }             else{                 a=b;                 b=i;             }         }         cout<<count<<endl;         count=0;     a=2;     b=3;     }     return 0; }
点赞 回复 分享
发布于 2018-04-08 20:31
楼主三角形的用Java怎么写啊,谢谢啦
点赞 回复 分享
发布于 2018-04-08 20:22
链家编程题无语了。。。
点赞 回复 分享
发布于 2018-04-08 20:29
求之前链家笔试的编程题题目
点赞 回复 分享
发布于 2018-04-08 20:34
灯泡那个 为什么可以set去重 2 2 1 2 2 2 3 这答案不是3吧?应该是2吧
点赞 回复 分享
发布于 2018-04-08 20:40
你确定第一题这个解法是对的?
点赞 回复 分享
发布于 2018-04-08 21:01
//请问这个是不能通过哪个测试啊?试了好久都只能通过0.1,请大神赐教 #include <iostream> using namespace std; int main() {     int lights[1002] = { 0 };     int num = 0;     cin >> num;     int n = 0;     int temp = 0;     for (int i = 1; i <= num; i++)     {         cin >> n;         for (int j = 1; j <= n; j++)         {             cin >> temp;             lights[temp] = 1;         }     }     int sum = 0;     for (int i = 1; i <= 1001; i++)     {         //cout << lights[i] << endl;         sum += lights[i];     }     cout << sum;     return 0; }
点赞 回复 分享
发布于 2018-04-08 21:09
#include <iostream> using namespace std; int main() {     int n;     while (cin >> n){         if (n <= 3) {             cout << 0<<endl;             continue;         }         int fst = 1, scd = 2, ct = 2;         int cur = fst + scd;         while (cur <= n)         {             ++ct;             fst = scd;             scd = cur;             cur = fst + scd;         }         cout << n - ct<<endl;     } } 10%,求找错
点赞 回复 分享
发布于 2018-04-08 21:12
第一题:看了半天,怎么求出最优的组合。我猜,大家都想的是灯泡能开也能关。好的,这样确实很复杂,我们先看下一题...后来发现是开了不能关,气的吐血。 第二题:emmm...试了下好像是斐波拉契数列,试了下,真没错!可是通过率10%,这....后来发现是多组输入!我想知道,今晚多少人10%。
点赞 回复 分享
发布于 2018-04-08 21:50

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务