总的来说,作为暑期实习生的题目,三题都不难,仔细思考都能顺利做出来

PS:我喜欢漂亮点的代码风格O(∩_∩)O

对于A题,求个逆序,再求最长公共子序列就可以了,这里回头还可以复习一下最长公共子串怎么求,记得上次省赛线段树+最长公共子串那题挂了不少人。

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;const int MAXLEN = 1010;
int temp[MAXLEN][MAXLEN];int getRemoveNumber(const string& res, int len)
{string str(res);reverse(str.begin(), str.end());for (int i = 0; i < len; ++i){for (int j = 0; j < len; ++j){if (res[i] == str[j])temp[i + 1][j + 1] = temp[i][j] + 1;else temp[i + 1][j + 1] = max(temp[i + 1][j], temp[i][j + 1]);}}return len - temp[len][len];
}
int main()
{string str;int ans;while (cin >> str){ans = getRemoveNumber(str, str.length());cout << ans << endl;}return 0;
}

对于B题:设置两个下标,从后往前找就可以了,不难但容易出错,而且加上边界情况容易混乱

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;void solve(string& str, int len)
{int i = len - 1, j = len - 1;char temp;while (true){if (i < 0){return;}if (str[i] < 'a'){temp = str[i];for (int k = i + 1; k <= j; ++k){str[k - 1] = str[k];}str[j] = temp;j--;}i--;}
}
int main()
{string str;while (cin >> str){solve(str, str.length());cout << str << endl;}return 0;
}

对于C题:咋一看简单,细想却发现不少问题。首先对于A、B两个数,求它们的对数,有两种情况,一种是A==B,则公式为NUM(A)*(NUM(A)-1) / 2,另一种,A != B时,公式为NUM(A)*NUM(B)。然后对于最小差的对数,也分两种情况,一方面是含有相同的数字的情况,那么最小差肯定是0,假设A有nA个相同的,B有nB个相同的,则最小差是它们的总和。另一方面,不含有相同的数字,即N个数各不相同,这也好办,代码中我注释了,就不罗嗦了,当然这两个方面可以合在一起,但要注意比较,不要在遍历时重复计算两个相同的。。。最后在降复杂度上,可以发现可以着手的地方是计算每个数字出现的个数上,可以用map降为O(1),当然,这一步一开始就因该想到了( •̀ ω •́ )y。

#include <iostream>
#include <algorithm>
#include <map>
using namespace std;const int MAX = 2147483647;
map<int, int>mmap;
int arr[100100];int countNumber(int a, int b)
{if (a == b) return mmap[a] * ( mmap[a] - 1 ) / 2;else return mmap[a] * mmap[b];
}
int main()
{int N;while (cin >> N){if (N == 1){cin >> N; //随便读一个进来cout << "0 0" << endl;continue;}for (int i = 0; i < N; ++i){cin >> arr[i];mmap[arr[i]]++;}sort(arr, arr + N);//若含有差值为0的,则看有多少个这样的数字,把它们的总对数加起来就是差值最小的对数int minNum1 = 0;for (auto it = mmap.begin(); it != mmap.end(); ++it){if (it->second > 1){minNum1 += ( it->second )*( it->second - 1 ) / 2;}}if (minNum1 != 0){cout << minNum1 << " " << countNumber(arr[0], arr[N - 1]) << endl;mmap.clear();continue;}//下面是不含有重复数字的,取差最小的两个数和差最大的两个数int min1, min2, mmin = MAX;//int max1, max2, mmax = INT_MIN;  //23333,突然发现用不着。。。int minNum2 = 0, maxNum2 = 0;for (int i = 0; i < N - 1; i++){//找最小if (arr[i + 1] - arr[i] < mmin){//min1 = arr[i];     //同上,用不着。。。//min2 = arr[i + 1];mmin = arr[i + 1] - arr[i];minNum2 = countNumber(arr[i], arr[i + 1]);}else if (arr[i + 1] - arr[i] == mmin){minNum2 += countNumber(arr[i], arr[i + 1]);}}cout << minNum2 << " " << countNumber(arr[N - 1], arr[0]) << endl;mmap.clear();}return 0;
}

腾讯2017暑期实习生编程题(三题)相关推荐

  1. 百度2017暑期实习生编程钓鱼比赛

    ss请cc来家里钓鱼,鱼塘可划分为n*m的格子,每个格子每分钟有不同的概率钓上鱼,cc一直在坐标(x,y)的格子钓鱼,而ss每分钟随机钓一个格子.问t分钟后他们谁至少钓到一条鱼的概率大?为多少? 输入 ...

  2. /* * 编程第三题(20分) 打印所有的水仙花数。所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身。(例153=1*1*1+3*3*3+5*5*5) */

    题目: /* 编程第三题(20分) 打印所有的水仙花数.所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身.(例153=111+333+555) */ 我是用java做的 public cla ...

  3. CSDN日报20170513 ——《腾讯2017校招实习生面试总结》

    程序人生 | 腾讯2017校招实习生面试总结 作者:十枚硬币 一定不轻易放弃,一直准备,再准备.越早准备越好.接下来,就是计划着六月中旬去深圳了,希望两个月的实习能最终换来校招 Offer. 点击阅读 ...

  4. 腾讯2019暑期实习生提前批CV岗笔试题

    目录 第一题 题意 思路 代码 第二题 题意 思路 代码 第三题 题意 思路 代码 第四题 题意 思路 代码 第五题 题意 思路 代码 笔试共有5道编程题,每道题20分,两个小时.以下内容的编写全凭记 ...

  5. 乐视2017暑期实习生笔试题(二)

    第二题: 传送门 [编程题] 困兽之斗 经过深思熟虑之后,小贱君打算去M国闯一闯,那是一个古老的东方国度,传说有很多高阶魔法师,他想成为一名伟大的魔法师,将来征服星辰大海. 经过千辛万苦,小贱君终于来 ...

  6. 华为2017暑期实习生面试体会

    今天到广州嘉鸿华美达酒店参加了华为2017年实习生的面试...总体感觉比较混乱,而且看到身边好多大神同学都被刷了,有点震惊,下面就讲讲体会. 首先是一面等候区,一群人坐在一个区域里,等着面试官出来叫人 ...

  7. 【腾讯】2017暑期实习生

    不难,但是还是做了很久,需要努力努力努力努力 [编程题]构造回文 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串.如何删除才能使得回文串最长呢? 输出需要删除的字符个数. 输入描述 ...

  8. 2017百度实习生招聘笔试真题编程题集合

    1,买帽子 AC代码如下: import java.util.HashSet; import java.util.Scanner; import java.util.Set; import java. ...

  9. 【笔试】美团2020暑期实习生编程题

    幸运星 观星的时候,一种常用的方式是画出类似于正方形的区域内,确定其中所有星星的坐标.现在我们在星空(一个无限大的二维平面)上建立坐标系,由于星星很小,我们忽略它的面积,认为每个星星是一个点.且所有星 ...

最新文章

  1. IDEA那些既好用又好玩的30多款宝贝插件,你知道多少?
  2. 计算机5G英语文献,5G移动网络外文文献翻译2018中英文.docx
  3. burpsuit学习--修改来源地址
  4. foo、bar到底是什么意思
  5. navicat连接本地MySQL8.0.19报1251错误的解决办法
  6. CentOS上安装Jekins
  7. 泛型TListT Generics.Collections单元
  8. 河南省哪个单招学校学计算机最好,河南单招走哪个学校好?「公办大学扩招」...
  9. 每日英语:Foreign Tourists Skip Beijing
  10. iview“官方“实现的右键菜单
  11. 大数据可视化有哪些作用和优点
  12. [电路]5-电压源、电流源的串联和并联
  13. wifi 验证加密 总结
  14. 【系统分析师之路】2015年系统分析师上午综合知识真题
  15. 上海职称英语计算机,上海职称英语考试
  16. PDF复制乱码 -- 原因及解决方案
  17. 抖音小程序可做类目--资讯
  18. 【转】微信小程序模板消息无限制群发
  19. 计算机作业毕业论文排版,大学计算机练习作业—毕业论文的排版
  20. FFmpeg学习日记2

热门文章

  1. 【Windows】一键自动设置IP及DNS的批处理脚本
  2. 等压线上怎么画风向_等压线图上怎么画风向?
  3. 比visio简单好用的绘图工具AxGlyph
  4. LeetCode T36 Valid Sudoku
  5. 压力测试时CPU、内存—初步理解
  6. ccd视觉检测设备主要应用于哪些场景
  7. OpenCV-判断OpenCV摄像头是否断开
  8. 人脸技术-人脸数据库汇总
  9. C++读取硬盘序列号
  10. 深度学习中的归一化方法简介(BN、LN、IN、GN)