#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <vector> using namespace std; int main() { char str[10010]; vector<int> num; gets(str); char *ptr; int a,b; ptr=strtok(str, " "); //cout << ptr << endl; a=atoi(ptr); num.push_back(a); //cout << '['<<a; while(ptr!=NULL) { ptr = strtok(NULL, " "); if(ptr!=NULL) { a=atoi(ptr); num.push_back(a); } } int i=0; vector<int>::iterator it = num.begin(); while(it != num.end()) { //cout << num[i] << " "; if(it==num.begin()&&*(it+1)-*(it)!=1) { num.erase(it); } else if(it==num.end()&&*it-*(it-1)!=1) { num.erase(it); break; } else if(*it-*(it-1)!=1&&*(it+1)-*it!=1) { num.erase(it); } else { it++; } } // for(int i=0; i<num.size(); i++) // { // cout << num[i] << " "; // } // cout << endl; it = num.begin(); cout << '['<<*it << "->"; it++; while(it != num.end()) { if(*it-*(it-1)!=1) { cout << *(it-1); if(it!=num.end()-1) { cout << ',' << *it << "->"; } } it++; } cout <<*(it-1) << "]" << endl; return 0; }
只过了9%,说实话没找到问题出在哪儿,大概率是不连续的单个数字的输出方式有问题,例如有 1 2 5 7 8几个数字
现在的方式是输出连续区间[1->2,7->8], 难道是要输出[1->2,5->5,7->8]或者[1->2,5,,7->8].经验证反正[1->2,5->5,7->8]也不对