美的笔试 - C++开发
单选 - 25道
多线 - 6道
基础语法+操作系统+代码输出判断
编程两道题:
1.将一个数组进行整理,如果一个数的前两个数和等于该数,删除中间的数:
#include <bits/stdc++.h>
using namespace std;
int main(){
int num;
vector<int> vec;
vector<int> data;
while(cin>>num){
data.emplace_back(num);
}
for(int i = 0 ; i<data.size() ; i++){
if(vec.size()<2){
vec.emplace_back(data[i]);
continue;
}
int fst = vec[vec.size()-2];
int sec = vec.back();
if(data[i] == fst + sec){
vec.pop_back();
i--;
}
else vec.emplace_back(data[i]);
}
for(auto num : vec){
cout<<num<<" ";
}
return 0;
}
2.爬楼梯变化,不固定步数
#include <bits/stdc++.h>
using namespace std;
int main(){
string str;
cin>>str;
vector<int> vec;
for(int i = 0 ; i<str.length() ; i++){
if(str[i] <= '9'&&str[i] >= '0'){
int ptr = i;
while(ptr<str.length()&&str[ptr] <= '9'&&str[ptr] >= '0')ptr++;
string cur = str.substr(i , ptr-i);
vec.emplace_back(stoi(cur));
i = ptr;
}
}
vector<int> dp(vec.size() , INT_MAX);
dp[0] = 0;
for(int i = 0 ; i<vec.size() ; i++){
int cur = vec[i];
for(int j = 1 ; j<=cur ; j++){
if(i+j>=vec.size())break;
dp[i+j] = min(dp[i+j] , dp[i]+1);
}
}
cout<<dp.back();
return 0;
}
#美的##笔试#
查看11道真题和解析