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 |
要么WA,要么OLE,恳请哪位高手看看,或者给点测试数据,都快疯了#include <iostream> #include <fstream> #include <math.h> #include <string> #include <vector> #include <algorithm> #include <stdio.h> #include <map> #include <iomanip> using namespace std; class Inventory { public: Inventory(string t):number(t) { } ~Inventory() { } string Inventorying(); private: string number; map<char,int> iteratmap; }; string Inventory::Inventorying() { char ch; string resultstr; string strt; int n=number.size(); int i=0; for (i=0;i<n;i++) { iteratmap[number[i]]++; } int j=0; int value; map<char,int>::iterator it=iteratmap.begin(); vector<char> chtemp; while (it!=iteratmap.end()) { chtemp.push_back((*it).first); it++; } n=chtemp.size(); for (i=1;i<n;i++) { ch=chtemp[i]; j=i-1; while (j>=0 && ch < chtemp[j]) { chtemp[j+1]=chtemp[j]; j--; } chtemp[j+1]=ch; } for (i=0;i<n;i++) { value=iteratmap[chtemp[i]]; if (value>10) { int k1=value/10; int k2=value-k1*10; ch=k1+'0'; resultstr.insert(resultstr.end(),ch); ch=k2+'0'; resultstr.insert(resultstr.end(),ch); } else { ch=value+'0'; resultstr.insert(resultstr.end(),ch); } ch=chtemp[i]; resultstr.insert(resultstr.end(),ch); } iteratmap.clear(); number=resultstr; return resultstr; } int isloop(vector<string> st_15); int main() { string t; string pt; string originalstr; vector<string> store15; bool flag=false; int i=0; while (cin >> t) { if (t=="-1") { break; } Inventory a(t); originalstr=t; store15.push_back(t); while (i<15) { pt=t; t=a.Inventorying(); store15.push_back(t); if (i==0 && pt==t) { cout << pt << " is self-inventorying" <<endl; break; } else if(pt==t && i>0) { cout << originalstr << " is self-inventorying after " << i << " steps" <<endl; break; } else { for (int j=store15.size()-2;j>=0;j--) { if (store15[j]==t) { cout << originalstr << " enters an inventory loop of length " << i-j+1 << endl; flag=true; break; } } if (flag) { flag=false; break; } } i++; } if (i>=15) { cout << originalstr << " can not be classified after 15 iterations" << endl; } store15.clear(); i=0; } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator