首页 > 代码库 > 华为机试—删除连续出现大于等于3的数字
华为机试—删除连续出现大于等于3的数字
输入一组数字(最多15个),去掉连续次数大于等于三的数字,如果去掉后仍有连续次数大于等于三的,继续进行同样的处理,直到结果中没有出现连续次数大于等于三的数字为止。
如果最终全部消除完了 输出“none”
测试结果:
如果最终全部消除完了 输出“none”
输入:1 1 1 1 2 2 2 1 3 3 3 3 1 1 1
输出:none
#include <iostream> #include <vector> using namespace std; int kk=1; void delete_num(vector<int> a) { int len = a.size(); int i,j; int flag=0; for(i=0;i<len;i++) { int k=i; for(j=k+1;j<len;) { if(a[k]==a[j]) j++; else { if(j-k>=3) { a.erase(a.begin()+k,a.begin()+j); flag=1; break; } else { k=j; j=k+1; } } } if(flag) break; if(j-k>=3){ a.erase(a.begin()+k,a.begin()+j); break; } } cout<<"第"<<kk<<"次除重: "; for(i=0;i<a.size();i++) cout<<a[i]<<" "; cout<<endl; if(a.size()==len){ cout<<"最后结果: "; for(i=0;i<a.size();i++) cout<<a[i]<<" "; } else{ if(a.size()!=0){ kk++; delete_num(a); } else cout<<"最后结果: none"<<endl; } } void main() { int n; vector<int> a; cin>>n; while(getchar()!='\n') { a.push_back(n); cin>>n; } a.push_back(n); delete_num(a); cout<<endl; }
测试结果:
华为机试—删除连续出现大于等于3的数字
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。