美的笔试 - 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; }#美的##笔试#