| ||||||||||
| 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 | |||||||||
出现超时现象,可以帮忙解决一下吗#include <iostream>
#include <stdio.h>
using namespace std;
string s[16];
char obj[80];
string g(string obj){
int num[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
for (int i = 0; i < obj.length(); i++){
num[(int)(obj[i] - '0')]++;
}
string temp = "";
for (int i = 0; i < 10; i++){
if (num[i] != 0){
char c[10];
sprintf(c, "%d", num[i]);
temp += c;
sprintf(c, "%d", i);
temp += c;
}
}
return temp;
}
void f(int index){
if (index == 16){
for (int i = 0; i < index; i++){
for (int j = i + 1; j < index; j++){
if (s[i] == s[j]){
printf("%s", s[0].c_str());
printf(" enters an inventory loop of length ");
printf("%d\n", j - i);
//cout<<s[0]<<" enters an inventory loop of length "<<j - i<<endl;
return;
}
}
}
printf("%s", s[0].c_str());
printf(" can not be classified after 15 iterations\n");
//cout<<s[0]<<" can not be classified after 15 iterations"<<endl;
return;
}
s[index] = g(s[index - 1]);
//cout<<s[index]<<endl;
if (s[index] == s[index - 1]){
if (index == 1){
printf("%s", s[0].c_str());
printf(" is self-inventorying\n");
//cout<<s[0]<<" is self-inventorying"<<endl;
}
else {
printf("%s", s[0].c_str());
printf(" is self-inventorying after ");
printf("%d", index - 1);
printf(" steps\n");
//cout<<s[0]<<" is self-inventorying after "<<index - 1<<" steps"<<endl;
}
return;
}
f(index + 1);
}
int main(void){
while (true){
scanf("%s", obj);
s[0] = obj;
if (s[0] == "-1") break;
//f(1);
printf("%s", obj);
for (int index = 1; index <= 16; index++){
if (index == 16){
for (int i = 0; i < index; i++){
for (int j = i + 1; j < index; j++){
if (s[i] == s[j]){
printf(" enters an inventory loop of length ");
printf("%d\n", j - i);
//cout<<s[0]<<" enters an inventory loop of length "<<j - i<<endl;
goto a;
}
}
}
printf(" can not be classified after 15 iterations\n");
//cout<<s[0]<<" can not be classified after 15 iterations"<<endl;
goto a;
}
s[index] = g(s[index - 1]);
//cout<<s[index]<<endl;
if (s[index] == s[index - 1]){
if (index == 1){
printf(" is self-inventorying\n");
//cout<<s[0]<<" is self-inventorying"<<endl;
}
else {
printf(" is self-inventorying after ");
printf("%d", index - 1);
printf(" steps\n");
//cout<<s[0]<<" is self-inventorying after "<<index - 1<<" steps"<<endl;
}
goto a;
}
}
a:;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator