标签:华为机试 删除连续出现大于等于3的数字 连续出现大于等于3的数字 删除连续数字
输入一组数字(最多15个),去掉连续次数大于等于三的数字,如果去掉后仍有连续次数大于等于三的,继续进行同样的处理,直到结果中没有出现连续次数大于等于三的数字为止。
输入: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的数字 连续出现大于等于3的数字 删除连续数字
原文地址:http://blog.csdn.net/wtyvhreal/article/details/42474965