爱奇艺 C++岗位在线笔试题目

20单选 3道编程
编程1:字符串s(长度不超过50)由R和G构成,R和G可以相互转换,输出最小的转换次数使得R比所有的G都靠近左侧。(长度较小,暴力解决)
编程2:神奇数满足以下两个条件(1)必须是两位数(2)个位和十位相同。
找出区间[left,right]之间的神奇数的个数。(区间较大,暴力解决超时)
编程3 :输入奶牛个数n和n个奶牛编号范围Ai(第i个奶牛编号范围为[1,Ai])奶牛编号,输出有多少种编号方法。(感觉是动态规划问题?)。

#爱奇艺##C++工程师##笔试题目#
全部评论
//记录每个点左边的G的个数(代码中数组b),包括该点,右边的R的个数(代码中数组f),不包括该点,然后 //然后找到b[i]+f[i]的最小值 #include <iostream> #include <string> #include <vector> using namespace std; int main(int argc,char* argv[]){     string s("RGRGR");     cin>>s;     int n=(int)s.length();     int count_1=0;     vector<int> b(n,0);     vector<int> f(n,0);     for(int i=0;i<n;i++){         if(s[i]=='G')             count_1++;         b[i]=count_1;     }     int count_2=0;     for(int i=n-2;i>=0;i--){         if(s[i+1]=='R')             count_2++;         f[i]=count_2;     }     int mm=0x7FFFFFFF;     for(int i=0;i<n;i++){         if(b[i]+f[i]<mm){             mm=b[i]+f[i];         }     }     if(n==0) mm=0;     cout<<mm<<endl; } //暴力和比较优的都写了,作对比。 #include <iostream> #include <string> #include <vector> using namespace std; bool isTrue(long num){     if(num<10) return false;     else{         int a=0,b=0;         a=num%10;         b=(num/10)%10;         return a==b;     }     return false; } long count(long num){     if(num<10) return 0;     else{         long n100=num/100;         num=num%100;         long n1=num%10;         long n10=num/10;         long ans;         if(n1>=n10){             ans=n100*10+n10;         }         else{             ans=n100*10+n10-1;         }         return ans;     }     return 0; } int main(int argc,char* argv[]){     long L=0,R=0;     cin>>L>>R;     cout<<count(R)-count(L-1)<<endl;     long cnt=0;     for(long i=L;i<=R;i++){         if(isTrue(i))             cnt++;     }     cout<<cnt<<endl;     return 0; } //找到规律就好 #include <iostream> #include <vector> #include <algorithm> using namespace std; int main(int argc,char* argv[]){     int n=0;     cin>>n;     vector<int> mvec(n,0);     for(int i=0;i<n;i++){         cin>>mvec[i];     }     sort(mvec.begin(),mvec.end());     long ans=1;     for(int i=0;i<n;i++){         ans*=mvec[i]-i;         if(ans>1000000007){             ans=ans%1000000007;         }     }     cout<<ans<<endl; }
点赞 回复 分享
发布于 2017-09-10 21:19
第三题就是先属于排序,然后就全排列问题
点赞 回复 分享
发布于 2017-09-10 21:06
ret=ret*(arr[i]-i)
点赞 回复 分享
发布于 2017-09-10 21:07
30 60 0,  生无可恋。 第一题死活30%。 第二题已经优化到O(1)了为什么还超时? 第三题没空做了,但是感觉是DP问题。
点赞 回复 分享
发布于 2017-09-10 21:08
神奇数好像和今天剑指offer丑数解法一样。我没有神奇数那题,随便猜的
点赞 回复 分享
发布于 2017-09-10 21:08
😂😂求第一题代码
点赞 回复 分享
发布于 2017-09-10 21:10
//第一题 #include <bits/stdc++.h> using namespace std; int getResult(string square) { int minChange = 100; int len = square.size(); if(len == 0) return 0; for (int i = 1; i < len; ++i) { int tmp = 0; for (int j = 0; j < i; ++j) { if(square[j] == 'G') tmp++; } for(int j = len - 1 ; j >= i ; --j) { if(square[j] == 'R') tmp++; } minChange = minChange > tmp ? tmp : minChange; } return minChange; } int main(){ string square; while(cin >> square) { cout << getResult(square) << endl; } return 0; } //第二题 #include <bits/stdc++.h> using namespace std; int getDigit(long long x) { int count = 0; while(x) { count++; x /= 10; } return count; } long long helper(long long x) { long long count = 0; int digit = getDigit(x); if(digit < 2) return 0; count += x/100 * 10; int y = x % 100; for (int i = 10; i <= y; ++i) { if(i/10 == i%10) count++; } return count; } long long getResult(long long l, long long r) { long long count = 0; count = helper(r) - helper(l-1); return count; } int main(){ long long l; long long r; while(cin >> l >> r) { cout << getResult(l,r) << endl; } return 0; }
点赞 回复 分享
发布于 2017-09-10 21:12
难度:2 < 3 < 1
点赞 回复 分享
发布于 2017-09-10 21:12
第二题、一个公式解决 #include <iostream> using namespace std; typedef long long ll; ll qiyi_num(const ll n) { if (n < 100) return n / 11; return (n/100 - 1) * 10 + ((n%100) / 11 + 1) + 9; } int main() { ll l, r; while (cin >> l >> r) { cout << qiyi_num(r) - qiyi_num(l-1) << endl; } return 0; }
点赞 回复 分享
发布于 2017-09-10 21:24
第二题神奇数就是11 22 到99吧?直接判断范围不是可以o(1)解决吗
点赞 回复 分享
发布于 2017-09-11 23:33
请问最后一题是排列问题吗?第一只牛取值为Ai种,第二只牛取值为Ai-1种·······
点赞 回复 分享
发布于 2018-04-19 15:27

相关推荐

jack_miller:我给我们导员说我不在这里转正,可能没三方签了。导员说没事学校催的时候帮我想办法应付一下
点赞 评论 收藏
分享
评论
点赞
10
分享
正在热议
# 25届秋招总结 #
439972次浏览 4484人参与
# 春招别灰心,我们一人来一句鼓励 #
41352次浏览 523人参与
# 阿里云管培生offer #
119629次浏览 2219人参与
# 地方国企笔面经互助 #
7914次浏览 18人参与
# 虾皮求职进展汇总 #
113497次浏览 880人参与
# 实习,投递多份简历没人回复怎么办 #
2453683次浏览 34846人参与
# 北方华创开奖 #
107236次浏览 598人参与
# 实习必须要去大厂吗? #
55552次浏览 959人参与
# 同bg的你秋招战况如何? #
75178次浏览 548人参与
# 提前批简历挂麻了怎么办 #
149763次浏览 1976人参与
# 投递实习岗位前的准备 #
1195578次浏览 18546人参与
# 你投递的公司有几家约面了? #
33165次浏览 188人参与
# 双非本科求职如何逆袭 #
661770次浏览 7394人参与
# 机械人春招想让哪家公司来捞你? #
157585次浏览 2267人参与
# 如果公司给你放一天假,你会怎么度过? #
4714次浏览 53人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11214次浏览 253人参与
# 发工资后,你做的第一件事是什么 #
12359次浏览 61人参与
# 工作中,努力重要还是选择重要? #
35521次浏览 384人参与
# 参加完秋招的机械人,还参加春招吗? #
20068次浏览 240人参与
# 实习想申请秋招offer,能不能argue薪资 #
39205次浏览 314人参与
# 我的上岸简历长这样 #
451863次浏览 8087人参与
# 非技术岗是怎么找实习的 #
155831次浏览 2120人参与
牛客网
牛客企业服务