Time Limit Exceeded why???
#include<iostream>
#include<algorithm>
#include<sstream>
using namespace std;
string calInv(string s){
int len=s.size();///>1
string res;
sort(&s[0],&s[len]);
int count=1;
for(int i=1;i<len;++i){///
if(s[i]==s[i-1]){
++count;
}
else{
stringstream ss;
string sc;
ss<<count;
ss>>sc;
for(int j=0;j<sc.size();++j){
res.push_back(sc[j]);
}
res.push_back(s[i-1]);
count=1;
}
}
stringstream ss;
string sc;
ss<<count;
ss>>sc;
for(int j=0;j<sc.size();++j){
res.push_back(sc[j]);
}
res.push_back(s[len-1]);
return res;
}
int main(){
string s;
while(cin>>s,s!="-1"){
if(calInv(s)==s){
cout<<s<<" is self-inventorying"<<endl;
continue;
}
string tt[16];
tt[0]=s;
int it=0;
for(;it<15;++it){
//cout<<it<<endl;//
tt[it+1]=calInv(tt[it]);
//cout<<tt[it+1]<<endl;//
if(tt[it+1]==tt[it]){
cout<<s<<" is self-inventorying after " <<it<<" steps"<<endl;
break;
}
int itt=0;
for(;itt<it-1;++itt){
if(tt[itt]==tt[it]){
cout<<s<<" enters an inventory loop of length "<<it-itt<<endl;
break;
}
}
if(itt<it-1)
break;
}
if(it==15)
cout<<s<<" can not be classified after 15 iterations"<<endl;
}
return 0;
}
改了最后判断 enters an inventory loop of length 的部分 依然Time Limit Exceeded
if(it==15){
int itt=13;
for(;itt>=0;--itt){
if(tt[itt]==tt[it]){
cout<<s<<" enters an inventory loop of length "<<it-itt<<endl;
break;
}
}
if(itt<0)
cout<<s<<" can not be classified after 15 iterations"<<endl;
}
请指正。