单选 - 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;}
点赞 6
评论 4
全部评论

相关推荐

头像
03-18 09:09
Java
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务