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:超时,哪位大神可以帮我看看程序?In Reply To:超时,哪位大神可以帮我看看程序? Posted by:zy666666666 at 2017-08-15 20:22:24 > #include <iostream> > #include <cstdio> > #include <string> > #include <algorithm> > #include <map> > #include <cstring> > #include <sstream> > /* run this program using the console pauser or add your own getch, system("pause") or input loop */ > using namespace std; > string data; > int m[10]; > map<string,int> v; > bool flag = 0; > int flagLength = 0; > string change(string data) { > string re = ""; > int i; > memset(m,0,sizeof(m)); > for(i = 0; i < data.length(); i++) { > m[(data[i]-'0')] ++; > } > > for(i = 0; i <= 9; i++) { > if(m[i] != 0) { > stringstream ss; > ss << re << m[i] << i; > re = ss.str(); > > } > } > > return re; > } > > int self_inventorying(string data) { > v.clear(); > int i; > string s = data; > string temp; > v[s] = 0; > for(i = 0; i < 15; i++) { > temp = change(s); > //cout << temp << endl; > if(temp == s) { > break; > }else { > if(v.count(temp) && flag == 0) { > flag = 1; > flagLength = i+1-v[temp]; > s = temp; > continue; > }else { > s = temp; > v[temp] = i+1; > //cout << temp << " " << v[temp] << endl; > } > > } > } > return i; > } > int main() { > while(1) { > cin >> data; > if(data == "-1") { > break; > }else { > flagLength = 0; > flag = 0; > int i= self_inventorying(data); > if(i == 0) { > cout << data << " is self-inventorying" << endl; > }else if(i < 15) { > cout << data << " is self-inventorying after " << i << " steps" << endl; > }else if(i >= 15 && flag == 1) { > cout << data << " enters an inventory loop of length " << flagLength << endl; > }else { > cout << data << " can not be classified after 15 iterations" << 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