| ||||||||||
| 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 | |||||||||
Re:贴下代码 一次acIn Reply To:贴下代码 一次ac Posted by:ooglmxx at 2011-10-03 20:03:47 > #include <iostream>
> #include <string>
> #include <vector>
> using namespace std;
>
> unsigned getLength(vector<string>& vps)
> {
> unsigned length=1;
> for(unsigned pos=2; pos<vps.size(); ++pos)
> {
> for(length=1; length<=pos; ++length)
> if(vps[pos-length]==vps[pos])
> return length;
> }
> return 0;
> }
>
> int main()
> {
> string n, vnp, vnq;
> vnp.reserve(100), vnq.reserve(100); //最长给出的字符串不会超过80个
> vector<int> note; //用于记录下一次字符串的形态
> vector<string> vps; //记录每次转换的字符串形态
>
> while(cin>>n, n!="-1")
> {
> vps.clear();
> vnp=n, vnq=vnp;
> int iterations=0, steps=0, length=0;
> while(iterations!=15)
> {
> vnq=vnp;
> note.assign(20, 0); //记录下次转换的字符串形态
> for(string::size_type i=0; i<vnp.size(); ++i)
> {
> int idx=vnp[i]-'0';
> note[idx]++;
> }
> vnp.clear();
> for(int idx=0; idx<10; ++idx)
> {
> if(note[idx]==0)
> continue;
> if(note[idx]>=10 )
> {
> char c1=note[idx]/10+'0', c2=note[idx]%10+'0';
> vnp.push_back(c1);
> vnp.push_back(c2);
> }
> else
> vnp.push_back(note[idx]+'0');
> vnp.push_back(idx+'0');
> }
> ++steps;
> if(vnp==vnq)
> break;
> vps.push_back(vnp);
> if(length=(int)getLength(vps))
> break;
> ++iterations;
> }
> if(steps==1)
> cout<<n<<" is self-inventorying"<<endl;
> else if(iterations==15)
> cout<<n<<" can not be classified after 15 iterations"<<endl;
> else if(vnp==vnq)
> cout<<n<<" is self-inventorying after "<<steps-1<<" steps"<<endl;
> else
> cout<<n<<" enters an inventory loop of length "<<length<<endl;
> }
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator