笔试题目描述忘记了,请见谅,有错误可以指出,有时间改
滴滴(通过笔试)
//滴滴笔试编程第一题 通过100%
using namespace std
struct node {
int a,b
}s[50010]
int cmp(node A,node B) {
return A.a<B.a
}
int main() {
int n
cin >> n
int ans = 0
for (int i=0
cin >> s[i].a >> s[i].b
sort(s,s+n,cmp)
ans = s[0].a+s[0].b
for (int i=1
if (ans>s[i].a)
ans += s[i].b
else if (ans==s[i].a)
ans += s[i].b
else if (ans<s[i].a)
ans = s[i].a+s[i].b
}
cout << ans << endl
return 0
}
//滴滴笔试编程第二题 通过18%
using namespace std
int main() {
int n,x
int a[100000+10]
int b[100000+10]
cin >> n >> x
int m = 0
for (int i=0
cin >> a[i]
m = max(m,a[i])
}
b[0] = 1
for (int i=1
b[i] = b[i-1]+x
}
if (m<b[n-1])
m = b[n-1]
int ans = 0
int ans1 = 0x3f3f3f
int rec = 2
while (b[n-1]<=m) {
ans = 0
for (int i=0
if (a[i]!=b[i])
ans++
}
b[0] = rec
for (int j=1
b[j] = b[j-1]+x
}
rec++
ans1 = min(ans1,ans)
}
cout << ans1 << endl
return 0
}
好未来
//好未来 1 ac
using namespace std
bool validBraces(string str) {
// write code here
char a[1000]
int top = -1
for (int i=0
if (str[i]=='(') {
a[++top] = '('
} else if (str[i]==')') {
if (a[top]=='(')
top--
else
a[++top] = ')'
}
if (str[i]=='{') {
a[++top] = '{'
} else if (str[i]=='}') {
if (a[top]=='{')
top--
else
a[++top] = '}'
}
if (str[i]=='[') {
a[++top] = '[';
} else if (str[i]==']') {
if (a[top]=='[')
top--;
else
a[++top] = ']'
}
}
if (top==-1)
return true
else
return false
}
int main() {
cout << validBraces("(){}[]")
return 0
}
//好未来编程题2 ac
using namespace std
int insert(string &str,int index) {
str += 'c'
int i
for (i=str.size()-2
str[i+1] = str[i]
}
str[i+1] = ','
return i
}
string convert(string str) {
// write code here
if (str.size()<=3)
return str
else {
int len = str.size()
int index
index = len-3
while (index>0) {
index = insert(str,index)
index = index-2
}
}
return str
}
int main() {
cout << convert("12345678")
return 0
}
百度
//百度 1 通过70%
using namespace std
int a[2000000+10]
int main() {
int n,p,q
cin >> n >> p
q = 100-p
for (int i=0
cin >> a[i]
}
sort(a,a+2*n)
int ans = 0
if (p>50) {
for (int i=0
ans += q*a[i]
}
for (int i=n
ans += p*a[i]
}
} else {
for (int i=0
if ((i+1)%2) {
ans += a[i]*q
}else {
ans += a[i]*p
}
}
}
if (ans%100==0) {
cout << ans/100 << endl
} else {
printf("%d%\n",ans)
}
return 0
}
//百度2
using namespace std
int main() {
int n,m,p
int a[5000][2]
int rec[110]
memset(rec,0.sizeof(rec))
for (int i=0
cin >> a[i][0] >> a[i][1]
rec[a[i][0]]++
}
return 0
}
神策数据
//神策数据5 ac
using namespace std
void reverse(string &str) {
int l = 0
int r = str.size()-1
char rec
while (l<r) {
rec = str[r]
str[r] = str[l]
str[l] = rec
r--
l++
}
}
bool includes(string s1, string s2) {
// write code here
int len1 = s1.size()
int len2 = s2.size()
string s3
if (len2>len1) {
} else {
s3 = s2
reverse(s2)
if (len1==len2) {
int i
for (i=0
if (s1[i]==s2[i])
}
if (i==len1)
return true
}else {
int j = 0
int i = 0
while (i!=len1&&j!=len2) {
if (s1[i]==s2[j]) {
i++
j++
}else {
i++
}
}
if (j==len2)
return true
else
}
}
if (len1==len2) {
int i
for (i=0
if (s1[i]==s3[i])
}
if (i==len1)
return true
}else {
int j = 0
int i = 0
while (i!=len1&&j!=len2) {
if (s1[i]==s3[j]) {
i++
j++
}else {
i++
}
}
if (j==len2)
return true
else
}
return false
}
int main() {
string s1,s2
cin >> s1 >> s2
bool ans = includes(s1,s2)
cout << ans << endl
return 0
}
神策数据
using namespace std
int greatestCommonpisor(int a, int b) {
// write code here
int rec
if (a>b) {
rec = a
a = b
b = rec
}
if (b%a==0)
return a
else {
for (int i=((int)sqrt(a)+1)
int an
if (a%i==0&&b%i==0)
return i
}
}
return 1
}
int main() {
int a,b
cin >> a >> b
cout << greatestCommonpisor(a,b) << endl
return 0
}
//神策数据
using namespace std
int getTimes(vector<int>& array, int k) {
// write code here
sort(array.begin(),array.end())
//int j = 1
int start = array[array.size()-1]
k--
int ans = 0
for (int i=array.size()-2
if (k==0) {
if (array[i]==start)
ans++
} else {
if (array[i]>start) {
k--
start = array[i]
}
}
}
return ans
}
int main() {
vector<int>a
a.push_back(1)
a.push_back(2)
a.push_back(3)
a.push_back(4)
a.push_back(4)
a.push_back(4)
cout << getTimes(a,1) << endl
return 0
}
涂鸦
//涂鸦 1
using namespace std
vector<vector<int> > merge(vector<vector<int> >& intervals) {
// write code here
vector<vector<int> > ans
int start = intervals[0][0]
int end = intervals[0][1]
int rec = 0
for (int i=1
if (intervals[i][0]<=end) {
end = intervals[i][1]
} else {
ans[rec].push_back(start)
ans[rec].push_back(end)
start = intervals[i][0]
end = intervals[i][1]
rec++
}
}
return ans
}
int main() {
vector<vector<int> > inter
inter[0][0] = 1
return 0
}
携程(笔试通过)
//携程 1 83%
using namespace std
int main() {
while (1) {
string str
vector<int> a
int data
cin >> str
for (int i=1
if (str[i]=='-') {
a.push_back(-(str[i+1]-'0'))
i++
} else if ('0'<=str[i]&&str[i]<='9') {
a.push_back(str[i]-'0')
}
}
if (a.size()==0){
printf("[]\n")
return 0
}
int now = 0
int max1 = -0x3f3f3f
int start,end
int recS
int recMax = -10
for (int i=0
if (a[i] > recMax) {
start = end = i
recMax = a[i]
}
}
if (recMax>0) {
recS = 0
for (int i=0
now += a[i]
if (now<0) {
now = 0
recS = i+1
}
if (now>max1) {
start = recS
end = i
}
max1 = max(now,max1)
}
}
printf("[%d,%d]\n",start,end)
}
return 0
}
//携程2
using namespace std
int main() {
int k,n
vector<int> n1
vector<vector<int> > time
scanf("%d%d",&k,&n)
int rec
for (int i=0
scanf("%d",&rec)
n1.push_back(rec)
}
vector<int> rec1
for (int i=0
for (int j=0
scanf("%d",&rec)
rec1.push_back(rec)
}
time.push_back(rec1)
rec1.clear()
}
vector<int> minTime
for (int i=0
int rec = 0x3f3f3f
for (int j=0
rec = min(rec,time[j][i])
}
minTime.push_back(rec)
}
vector<int> rec2
for (int i=0
rec2.push_back(n1[i]*minTime[i])
}
sort(rec2.begin(),rec2.end())
cout << rec2[0] << endl
return 0
}
京东
// 京东 1
using namespace std
string yi(int num) {
if (num==1)
return "yiyi"
else if (num==2) {
return "eryi"
}
else if (num==3) {
return "sanyi"
}
else if (num==4) {
return "siyi"
}else if (num==5) {
return "wuyi"
}else if (num==6) {
return "liuyi"
}
else if (num==7) {
return "qiyi"
}
else if (num==8) {
return "bayi"
}
else if (num==9) {
return "jiuyi"
}
return ""
}
string judge(int num,int j) {
string rec
if (num==0) {
return "ling"
}
else if (num==1) {
rec = "yi"
}
else if (num==2) {
rec = "er"
}
else if (num==3) {
rec = "san"
}
else if (num==4) {
rec = "si"
}else if (num==5) {
rec = "wu"
}else if (num==6) {
rec = "liu"
}
else if (num==7) {
rec = "qi"
}
else if (num==8) {
rec = "ba"
}
else if (num==9) {
rec = "jiu"
}
if (j==7)
rec += "qianwan"
else if (j==6) {
rec += "baiwan"
}else if (j==5) {
rec += "shiwan"
}else if (j==4) {
rec += "wan"
}else if (j==3) {
rec += "qian"
}else if (j==2) {
rec += "bai"
}else if (j==1) {
rec += "shi"
}
return rec
}
string number2Hanyu(int num) {
// write code here
int a[10]
int i=0
while (num!=0) {
a[i++] = num%10
num = num/10
}
string ans = ""
for (int j=(i-1)
if (j==8) {
ans = ans + yi(a[j])
}else{
ans += judge(a[j],j)
}
}
return ans
}
int main() {
int num = -1
cout << (-num) << endl
while (cin >> num)
cout << number2Hanyu(num) << endl
return 0
}
博乐科技
//1 博乐科技 通过 90.24%
using namespace std
//
int partition(int arr[],int l,int r) {
int pri = arr[l]
while (l<r) {
while (arr[r]>pri&&l!=r) {
r--
}
if (l==r)
break
arr[l] = arr[r]
while (arr[l]<pri&&l!=r) {
l++
}
if (l==r)
break
arr[r] = arr[l]
}
arr[l] = pri
return l
}
void quickSort(int arr[],int left,int right) {
if (left<right) {
int pri = partition(arr,left,right)
quickSort(arr,left,pri-1)
quickSort(arr,pri+1,right)
}
}
int main() {
int a[5] = {-41,7,20,-46,38}
quickSort(a,0,4)
for (int i=0
cout << a[i] << " "
}
cout << endl
return 0
}
//2 ac
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 输入字符串, 返回三进制值的字符串
* @param sixString string 16进制数
* @return string
*/
long long int toTwo(string sixString) {
int len = sixString.size()
long long int ans = 0
int j = 0
int rec
for (int i=len-1
if (sixString[i]=='A') {
rec = 10
}else if (sixString[i]=='B') {
rec = 11
}else if (sixString[i]=='C') {
rec = 12
}else if (sixString[i]=='D') {
rec = 13
}else if (sixString[i]=='E') {
rec = 14
}else if (sixString[i]=='F') {
rec = 15
} else {
rec = sixString[i]-'0'
}
ans += rec*(long long)pow(16,j)
j++
}
return ans
}
string sixToThree(string sixString) {
write code here
long long int rec
rec = toTwo(sixString)
string ans = ""
while (rec!=0) {
ans += (char)((rec%3)+'0')
rec = rec/3
}
int l = 0
int r = ans.size()-1
char recC
while (l<r) {
recC =ans[l]
ans[l] = ans[r]
ans[r] = recC
l++
r--
}
return ans
}
}
//3
using namespace std
int vis[100][100]
int next[4][2] {1,0,-1,0,0,1,0,-1}
bool check(int x,int y,int gridR,int gridC) {
if (x<0||y<0||x>=gridR||y>=gridC)
return false
return true
}
int dfs(int** grid,int x,int y,int lenx,int leny) {
int ans = 0
if (grid[x][y]) {
ans += 1
}
for (int i=0
int nX = x+next[i][0]
int nY = y+next[i][1]
if (check(nX,nY,lenx,leny)&&grid[nX][nY]&&!vis[nX][nY]) {
ans += dfs(grid,nX,nY,lenx,leny)
}
}
}
int maxAreaOfIsland(int** grid, int gridRowLen, int gridColLen) {
// write code here
memset(vis,0,sizeof(vis))
int ans = 0
int ans1 = -2
int nextX
int nextY
for (int i=0
for (int j=0
ans = 0
if (grid[i][j]&&!vis[i][j]) {
ans += 1
for (int s=0
nextX = i+next[s][0]
nextY = j+next[s][1]
if (check(nextX,nextY,gridRowLen,gridColLen)&&!vis[nextX][nextY]) {
vis[nextX][nextY] = 1
ans += dfs(grid,nextX,nextY,gridRowLen,gridColLen)
}
}
}
grid[i][j] = 0
ans1 = max(ans1,ans)
}
}
return ans1
}
int main() {
return 0
}
游塔游戏
游塔游戏 2 20%
using namespace std
int main() {
int n
int a[5000+10]
int t[5000+10][5000+10]
cin >> n
for (int i=0
cin >> a[i]
}
for (int i=0
for (int j=0
cin >> t[i][j]
}
for (int i=0
for (int j=0
if (t[i][j]>0)
t[i][j] += a[i]
}
}
int ans = 0x3f3f3f
for (int i=0
if (t[i][0]>0&&t[i][n-1]>0) {
ans = min(ans,t[i][0]+t[i][n-1])
}
}
for (int i=0
if (t[0][i]>0&&t[n-1][i]>0)
ans = min(ans,t[0][i]+t[n-1][i])
}
cout << ans << endl
return 0
}
游塔游戏 3 25%
using namespace std
struct node{
int cost,power
}a[510]
int cmp(node A,node B) {
return A.power*1.0/A.cost > B.power*1.0/B.cost
}
int cmp1(node A,node B) {
return A.power > B.power
}
int main() {
long long n,max_count,max_cost
cin >> n >> max_count >> max_cost
for (int i=0
cin >> a[i].cost >> a[i].power
}
sort(a,a+n,cmp)
long long ans = 0
for (int i=0
ans += a[i].power
sort(a,a+n,cmp1)
long long ans1 = 0
int j=0
int i = 0
while (j!=max_count) {
if ((max_cost-a[i].cost)>0) {
ans1 += a[j].power
max_cost -= a[j].cost
j++
}
i++
}
ans = max(ans,ans1)
cout << ans << endl
return 0
}
游塔游戏 4
using namespace std
int vis[5]
int solve(vector<int> a,int index) {
for (int i=0
vis[index] = 1
for (int i=0
if (i==0) {
}
}
}
}
int main() {
int n
vector<int> a
int rec
long long ans = 0
while (n--) {
while (~scanf("%d",&rec) {
a.push_back(rec)
}
ans += solve(a,0)
}
cout << ans << endl
return 0
}
int maxSubmatrixSum(std::vector<std::vector<int>> matrix,int n, int m) {
int base_sum = 0
for (int i = 0
for (int j = 0
base_sum += matrix[i][j]
}
}
int result = 0
for (int i = 0
if(i > 0){
for (int y = 0
base_sum += matrix[i + n][y] - matrix[i - 1][y]
}
}
int real_sum = base_sum
if (real_sum > result) {
result = real_sum
}
for (int j = 0
for (int x = 0
real_sum += matrix[x][j + m] - matrix[x][j - 1]
}
if (real_sum > result) {
result = real_sum
}
}
}
return result
}
using namespace std
int judge(string a) {
if (a=="+"||a=="-"||a=="*"||a=="/")
return 0
else
return 1
}
int toNum(string num) {
int ans = 0
for (int i=0
ans = ans*10+(num[i]-'0')
return ans
}
int evalRPN(vector<string>& tokens) {
int stack[100]
int top = 0
for (int i=0
if (judge(tokens[i])) {
int num = toNum(tokens[i])
stack[top++] = num
} else {
int next
int firstNum = stack[--top]
int secondNum = stack[--top]
if (tokens[i]=="*") {
next = firstNum*secondNum
}
else if (tokens[i]=="-") {
next = secondNum-firstNum
}
else if (tokens[i]=="+")
next = secondNum+firstNum
else if (tokens[i]=="/")
next = secondNum/firstNum
stack[top++] = next
}
}
return stack[top-1]
}
int main() {
vector<string>a
a.push_back("2")
a.push_back("1")
a.push_back("+")
a.push_back("3")
a.push_back("*")
int ans = evalRPN(a)
cout << ans << endl
return 0
}