| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
这题目用G++ IO超时 只能改C++了 早知道就不用类写了 附上代码,各位帮忙优化下吧#include <iostream>
#include <vector>
#include <iterator>
#include <cstring>
#include <string>
using namespace std;
const char spaces[12][13]={
"", // 0
" ", //1
" ", //2
" ", //3
" ", //4
" ", //5
" ", //6
" ", //7
" ", //8
" ", //9
" ", //10
" "//11
};
class StrSequence : public vector< pair<string, int> > {
private:
void call(iterator iter) {
iterator next;
pair<string, int> *p, *pnext;
p = &(*iter);
for (next = iter+1; next!=this->end(); next++) {
pnext = &(*next);
if ( p->second==pnext->second
&& p->first.size()>p->second && pnext->first.size()>p->second && pnext->first.at(p->second) == p->first.at(p->second) ) {
pnext->second++;
} else {
break;
}
}
return;
}
void print(pair<string, int> *p) {
cout<<spaces[p->second]<<p->first<<endl;
}
public:
StrSequence() {
;
}
void input(string *str) {
pair<string, int> *p;
p =new pair<string, int>(*str,0);
this->push_back(*p);
delete p;
}
void output() {
for (iterator iter = this->begin(); iter!=this->end(); iter++) {
print(&(*iter));
}
}
void solve() {
for (iterator iter = begin(); iter!=this->end(); iter++) {
call(iter);
}
}
};
int main() {
StrSequence ss;
string str;
char temp[20];
while (gets(temp)) {
str = temp;
if(strlen(temp)==0) break;
ss.input(&str);
}
ss.solve();
ss.output();
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator