愛奇藝2018年9月15日筆試程式設計題目AC程式碼
阿新 • • 發佈:2018-11-08
這幾天一直在關注著工作的事情,師兄們做筆試題,我也跟著在刷,包括華為,百度,騰訊,阿里等公司的筆試題都做了,基本上都幫助師兄拿到了面試的資格,但是因為密度太大,而自己還要整理leetcode的學習筆記,所以,很多題目沒有來得及整理,今天正好提前AC完成,就簡單分享一下愛奇藝的兩個題目。
第一個題目是,一個字串,有六個符號,符號是從字元0到字元9的任意一個數,給定一個字串後,你可以改變任意任何位置上的字元,目的是想讓前三個字元的和與後三個字元的和相等,要求改變的字元位置儘可能少。剛開始只能通過82%,主要是隻考慮一邊改變的情況,而兩邊是可以同時改變的。下面是我AC的程式碼,寫的超級簡陋,剛剛筆試完就發的部落格,有點倉促,其實可以做很多優化:
#include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; int main() { int res; string str = ""; cin >> str; int left = str[0]+str[1]+str[2]; int right = str[3]+str[4]+str[5]; int dist = abs(left- right); if (!dist) { cout << dist << endl; return 0; } if (str[0] > str[1]) { swap (str[0], str[1]); } if (str[0] > str[2]) { swap (str[0], str[2]); } if (str[1] > str[2]) { swap (str[1], str[2]); } if (str[3] > str[4]) { swap (str[3], str[4]); } if (str[3] > str[5]) { swap (str[3], str[5]); } if (str[4] > str[5]) { swap (str[4], str[5]); } int minnums = 3; int nums = 0; int tmp = dist; while (tmp>0 && nums<3) { tmp -= ('9'-str[nums]); ++nums; } minnums = min(nums, minnums); tmp = dist; nums = 0; while (tmp>0 && nums<3) { tmp -= (str[2-nums]-'0'); ++nums; } minnums = min(nums, minnums); tmp = dist; nums = 0; while (tmp>0 && nums<3) { tmp -= ('9'-str[nums+3]); ++nums; } minnums = min(nums, minnums); tmp = dist; nums = 0; while (tmp>0 && nums<3) { tmp -= (str[5-nums]-'0'); ++nums; } minnums = min(nums, minnums); if (minnums == 3) { if (('9'-str[0]+str[5]-'0')>tmp || (str[3]-'0'+'9'-str[3])>tmp) { minnums = 2; } } cout << minnums << endl; return 0; }
第二個題目很簡單,就是說,給定一組食物,每種食物的份數告訴,一個人每天要麼吃一份食物,要麼添一份食物,最後,經過M天,給出特定的某個食物份數的排名是多少?
#include <iostream> #include <string> #include <vector> using namespace std; int main() { vector<int> A; int N = 0, M = 0, P = 0; cin >> N >> M >> P; for (int i=0; i<N; ++i) { int ai = 0; cin >> ai; A.push_back(ai); } for (int i=0; i<M; ++i) { char ab = 0; int num = 0; cin >> ab >> num; if (num <= N && num >= 0) { if (ab == 'A') { ++A[num-1]; } else if (A[num-1] > 0) { --A[num-1]; } } } int res = 1; for (int i=0; i<N; ++i) { if (i != (P-1) && A[i]>A[P-1]) { ++res; } } cout << res << endl; for (int i=0; i<A.size(); ++i) { cout << A[i] << " "; } cout << endl; return 0; }