腾讯2017暑期实习生编程题
来源:互联网 发布:甬航数据交互平台 编辑:程序博客网 时间:2024/05/16 00:44
给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?
你能帮帮小Q吗?
小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,差最小的有多少对呢?差最大呢?
输出需要删除的字符个数。
解题思路:求一个字符串自身与他的逆序列的最长公共子序列。
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N =1005;int dp[N][N];int main(){ char s1[N],s2[N]; while(cin>>s1) { memset(s2,0,sizeof(s2)); memset(dp,0,sizeof(dp)); int len=strlen(s1); for(int i=len-1;i>=0;i--) s2[len-i-1]=s1[i]; //cout<<s1<<" "<<s2<<endl; for(int i=1;i<=len;i++) { for(int j=1;j<=len;j++) { if(s1[i-1]==s2[j-1]) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=max(dp[i-1][j],dp[i][j-1]); } } cout<<len-dp[len][len]<<endl; } return 0;}小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。
你能帮帮小Q吗?
水题
#include <iostream>#include <cstring>#include <cstdio>#include <cctype>using namespace std;const int N = 1005;int main(){ char s1[N],s2[N]; while(~scanf("%s",s1)) { int len=strlen(s1); memset(s2,0,sizeof(s2)); int j=0; for(int i=0;i<len;i++) { if(isupper(s1[i])) s2[j++]=s1[i]; else printf("%c",s1[i]); } printf("%s\n",s2); } return 0;}
小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,差最小的有多少对呢?差最大呢?
解题思路:
先排序,差值最大的肯定是最大数减去最小数,我们只要求出最大数,最小数的个数,然后相乘就可以了。
差值最小的肯定相邻元素之前的差值,我们需要判断最小值是否为0。为0时,求出相等元素的个数。不为0,求出相邻元素差值等于最小值的个数
#include <iostream>#include <cstdio>#include <algorithm>#include <climits>using namespace std;const int N=100005;int a[N];int main(){ int n; while(~scanf("%d",&n)) { for(int i=0; i<n; i++) scanf("%d",&a[i]); sort(a,a+n); int min_s=INT_MAX; for(int i=1; i<n; i++) { min_s=min(a[i]-a[i-1],min_s); } int min_cnt=0,max_cnt=0; int x=0,y=0; for(int i=0; i<n; i++)//求最小数的个数和最大数的个数 { if(a[i]==a[0]) x++; if(a[i]==a[n-1]) y++; } max_cnt=x*y;//个数相乘 if(min_s==0)//最小差值为0 { for (int i=1; i<n; i++)//求相等元素的个数 { int j=i-1; while (a[j]==a[i] && j>=0) { min_cnt++; j--; } } } else { for(int i=1; i<n; i++)//求相邻元素的差值为最小值的个数 { if(a[i]-a[i-1]==min_s) min_cnt++; } } //printf("%d %d\n",min_s,max_s); printf("%d %d\n",min_cnt,max_cnt); } return 0;}
阅读全文
1 0
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题器
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题3
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题
- 腾讯2017暑期实习生编程题
- 腾讯笔试编程题(2017暑期实习生编程题)
- 第一天
- IP问问区县级别IP地址库---使用帮助(下篇)
- 解决easyui和bootstrap兼容问题
- Spring 整合 spark 使用
- java基本数据类型
- 腾讯2017暑期实习生编程题
- 异常
- js再次确认密码
- 注释
- Windows 更新安装 Windows 7 SP1失败错误代码80073712解决方法:
- FP-growth算法发现频繁项集(一)——构建FP树
- Python 中 变量的 is 和 == 符号的作用
- codeforces 603E(LCT+优先队列)
- 链表的常见操作入门(一)