牛客二模

选择题部分: 
1 C++中下面程序输出的结果为:()

#include <iostream>
using namespace std;
int main(){
    float a=b=12.5;
    cout<<a<<endl<<b;
    return 0;
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

A 12.5 12.5 
B 12.5 0.0 
C 0.0 12.5 
D 编译错误

代码第五行报错 [Error]’b’ was not declared in this scope 
选D

2 一个算法的时间复杂度为(n^3+n^2log2n+5n)/n^2,按照O()记法,其数量级表示为() 
A O(n^3) 
B O(n) 
C O(nlongn) 
D O(n^2logn)

n^3/n^2=n 
选B

3 A市B,C两个区,人口比例为3:5,据历史统计B区的犯罪率为0.01%,C区为0.015%,现有一起新案件发生在A市,那么案件发生在B区的可能性有多大?() 
A 37.5% 
B 32.5% 
C 28.6% 
D 76.9%

3*0.01%/(3*0.01%+5*0.015%)≈28.6% 
这个是条件概率吧,忘了

4 下述有关虚函数和纯虚函数说法错误的是() 
A 被virtual关键字修饰的成员函数,就是虚函数 
B 在基类中实现纯虚函数的方法是在函数原型后加“=0” virtual void funtion1() = 0 
C 同时含有纯虚函数的类称为抽象类,它可以被实例化,但是对象不可以调用纯虚函数 
D 使用纯虚函数的意义是在很多情况下,基类本身生成对象是不全情理的

参考:http://blog.csdn.net/xwpc702/article/details/8670025选C 抽象类是不能被实例化的,因为有纯虚函数没有定义

5 下面不属于TCP协议拥塞控制部分的是() 
A 快速重传 
B 慢启动 
C 带外数据 
D 快速恢复

参考:http://blog.csdn.net/sicofield/article/details/9708383 
选C 计算机网络知识

6 牛客网为激励员工努力工作,决定根据每月的工作绩效评选“牛客之星”,王某在前10个月恰好只有连续的4个月中当选“牛客之星”,他的另三位同事杨某,肖某,华某也做到了这一点。关于这四人当选“月度之星”(“牛客之星”??)的月份,已知:(1)王某和杨某仅有三个月同时当选;(2)杨某和肖某仅有三个月同时当选;(3)王某和华某不曾在同一个月当选;(4)仅有2人在7月同时当选;(5)至少有1人在1月当选。根据以上信息,有3人同时当选“牛客之星”的月份是() 
A 1-3月 
B 2-4月 
C 3-5月 
D 4-6月 
E 5-7月

1234 华 
3456 肖 
4567 杨 
5678 王 
选D

7 设G(V,E)为一个无向图,顶点集大小为P,边集大小为Q,则G图中所有顶点度之和为() 
A P 
B Q 
C 2Q 
D 2(P+Q)

选C 2*Q

8 下面哪种数据结构不能用来描述栈?() 
A FIFO list 
B LIFO list 
C Piles 
D Push-down lists

A 随便选的。问的不是实现,是描述,那就选对立面吧。

9 下面有关C++线程安全,说法错误的是?() 
A 线程安全问题都是由全局变量及静态变量引起的 
B 若每个线程中对全局变量、静态变量只有只读操作,而无写操作,一般来说这个,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般需要考虑线程同步,否则的话就可能影响线程安全 
C C++标准库里面的string保证是线程安全的 
D POSIX线程标准要求C标准库中的大多数函数具备线程安全性

选C 
http://blog.csdn.net/chengonghao/article/details/51943731

10 以下不属于NoSQL数据库的是?() 
A Redis 
B Mongodb 
C Cassandra 
D PostgreSQL

常用有这些Cassandra、Mongodb、CouchDB、Redis、 Riak、Membase、Neo4j HBase 
选D 参考:http://blog.jobbole.com/1344/

11 查询该目录及子目录下所有的以.conf为后缀的文件 
A find ./ -name “conf” 
B find ./ -name “*.[conf]” 
C find ./ -type f | egrep “.(conf)” 
D find ./ -regextype posix-extended -regex “.*.(conf)”

太久没接触 感觉“*.conf”就可以 
选B 灵性选

12 假定把磁盘上的一个数据块中的信息输入到一个双缓冲区的时间为T=0.1ms,将缓冲区中的数据送到用户区的时间M=0.05ms,而CPU对数据的处理时间C=0.05ms,这样系统对每个数据块的处理时间为() 
A 0.05ms 
B 0.1ms 
C 0.15ms 
D 0.25ms

操作系统知识(为什么感觉是计算机组成原理讲的) 
原题https://www.nowcoder.com/questionTerminal/b92966024ee9410e959f883dd6e89b25 
http://www.examw.com/os/xp/180575/ 
选B 流水式作业考虑最大的值,所以选B吗?

13牛客网为了扩大业务规模,招了很多人,因此重新租用一间新的办公大楼,牛客的工程师们用电脑制作出了办公大楼的模型,正在规划如何布局新的工作环境,他们打算在娱乐区用大小相等的圆形材料分割出一些空间,如果使用3种不同圆形材料最多可以将空间分为八个区域(包括圆形以外的区域),如果给你七个圆形材料,你最多可以帮助工程师们分出多少个空间?() 
用两个圆可以把平面空间分成4份,三个圆可以分成8份,现在有七个圆,最多可以把平面空间分成几份()(大概意思是这样) 
A 128 
B 100 
C 64 
D 44

作业帮是个好东西 
https://www.zybang.com/question/836443b3973ed7238ca04d86b3861be1.html 
选D 公式n^2-n+2

14 下面关于哈夫曼树的说法中,错误的是() 
A 哈夫曼树是一棵完全二叉树 
B 哈夫曼树中没有度为1的结点 
C 哈夫曼树具有最上的带权路径长度 
D 同一组权值构造的哈夫曼树不唯一

哈夫曼树不一定是完全二叉树 
选A

15 下面程序的功能是输出数组的全排列,选择正确的选项,完成其功能()

void perm(int list[], int k, int m)
{
    if(    )
    {    
        copy(list,list+m,ostream_iterator<int>(cout," "));    
        cout<<endl;    
        return;
    }
    for (int i=k; i<=m; i++)
    { 
        swap(&list[k],&list[i]);    
        (    );    
        swap(&list[k],&list[i]);
    }
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

A k!=m 和 perm(list,k+1,m) 
B k==m 和 perm(list,k+1,m) 
C k!=m 和 perm(list,k,m) 
D k==m 和 perm(list,k,m)

原题: 
https://www.nowcoder.com/questionTerminal/af099970cfcc44cfa8e43348f600a017?pos=16&orderByHotValue=1 
选B 第一个if是判断是不是要打印全排列了,第二个是交换k,i后递归的下一步

16 下列关于线程和进程的描述错误的是?() 
A 一个进程至少有一个线程来运行 
B 进程合适在SMP机器上进行,而线程则可以跨机器迁移 
C 线程必须存在进程里面 
D 即使程序员不创造任何线程,操作系统将创建主线程为每一个应用程序或进程

选D ABC感觉都对 所以选D

17 一个顺序存储的长度为n的线性表,在第i个位置前面插入一个元素,总共需要移动的元素个数为()。 
A n-i 
B n-i+1 
C i 
D n-i-1

作业帮现在也面向大学生了吗? 
https://www.zybang.com/question/b49c2fe0d9191516373ac501b61f9e89.html 
选B 读题的时候,其实我很想说有没有第0个位置(插播笑话)

18 每10分钟运行一次crond任务exam,下面哪项正确?() 
/10 * * * exam   
B 10/* * * * * exam 
C * * /10 * exam 
D * /10 * * exam

参考 https://www.nowcoder.com/questionTerminal/b3d3dafd6a55486880c6a339ff6547c0

http://blog.csdn.net/lzuacm/article/details/52443341 
选A

19 某系统中有9台打印机,三个进程P1,P2,P3需要打印机的数量分别为7台、6台和4台。若P1、P2、P3已申请到4台、1台和2台且每个进程必须申请到需要数量的打印机才能执行结束,然后释放资源。下列说法正确的是() 
A 存在不止一个安全序列,所以系统处于安全状态 
B 因为不存在安全序列,所以系统处于不安全状态 
C 存在安全序列P3、P1、P2,所以系统 处于安全状态 
D 存在安全序列P3、P2、P1,所以系统 处于安全状态

选C 没什么好解释的

20 对算法估计空间复杂度,关注的是() 
A 程序代码占用的空间 
B 程序使用的辅助空间 
C 程序运行占用的空间 
D 程序使用的数据空间

参考 http://sanwen.net/a/fjmufpo.html 
看了下这个公众号 已经70+我没读了 懒惰的我 
选B ACD都不对

以上的答案都是自己琢磨的,不保证一定对。

编程题部分: 
代码均复制自此帖 https://www.nowcoder.com/discuss/22561?type=0&order=0&pos=6&page=1


这里写图片描述

输入例子: 
1221 
1234

输出例子: 
YES 
NO

代码:

/*
作者:NotDeep
链接:https://www.nowcoder.com/discuss/22561?type=0&order=0&pos=6&page=1
来源:牛客网
*/

#include <bits/stdc++.h>

using namespace std;

string solve(int number) {
    ostringstream oss;
    oss << number;
    string s = oss.str();
    int n = s.length();
    long long n1, n2;
    for(int i = 1; i < n; i++) {
        n1 = n2 = 1;
        for(int j = 0; j < i; j++)
            n1 *= s[j] - '0';
        for(int j = i; j < n; j++)
            n2 *= s[j] - '0';
        if(n1 == n2)
            return "YES";
    }
    return "NO";
}
int main() {
    int x;
    cin >> x;
    cout << solve(x) << endl;
    return 0;
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33


题目 2 
这里写图片描述 
这里写图片描述

代码:

/*
作者:NotDeep
链接:https://www.nowcoder.com/discuss/22561?type=0&order=0&pos=6&page=1
来源:牛客网
*/

#include <bits/stdc++.h>

using namespace std;

vector<string> v;
int main() {
    int n;
    cin >> n;
    for(int i = 0; i < n; i++) {
        string x;
        cin >> x;
        sort(x.begin(), x.end());
        v.push_back(x);
    }
    sort(v.begin(), v.end());
    int ans = 0;
    string tmp("");
    for(int i = 0; i < v.size(); i++) {
        if(tmp != v[i]) tmp = v[i], ans++;
    }
    cout << ans << endl;
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

把输入的字符串排序,再把这n个字符串再排序,然后找有多少个不同的


这里写图片描述 
这里写图片描述

代码

/*
作者:NotDeep
链接:https://www.nowcoder.com/discuss/22561?type=0&order=0&pos=6&page=1
来源:牛客网
*/

#include <bits/stdc++.h>

using namespace std;

const int maxn = 500;

vector <string> *l;

int m, n, x;
int solve(int i, int numZeroes, int numOnes) {
    vector<string> &list = *l;
    if(i == list.size()-1) {
        for(int x = 0; x < list[i].size(); ++x) {
            if(list[i][x] == '1') --numOnes;
            if(list[i][x] == '0') --numZeroes;
        }
        if((numOnes | numZeroes) >= 0) return 1; 
        else return 0;
    }
    int a = solve(i+1, numZeroes, numOnes);
    for(int x = 0; x < list[i].size(); ++x) {
            if(list[i][x] == '1') --numOnes;
            if(list[i][x] == '0') --numZeroes;
    }
    if((numOnes | numZeroes) < 0) return a;
    int b = 1 + solve(i+1, numZeroes, numOnes);
    return max(a, b);
}
int main() {
    vector<string> v;
    cin >> x >> n >> m;
    for(int i = 0; i < x; i++) {
        string tmp; cin >> tmp;
        v.push_back(tmp);
    }
    l = &v;
    cout << solve(0, n, m) << endl;
    return 0;
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

这个感觉是类似0-1背包的问题,但是看了参考答案用的是动态规划的方法。

感谢牛客网!! 
https://www.nowcoder.com/132183

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值