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,或者能给一点数据#include <iostream> #include <strstream> using namespace std; char NN[20][128]; int digits[10]; //NN[0]=original number //NN[k]=k-th inv //if(NN[0]==NN[1]) self-inventorying //if(NN[i]==NN[k]) enters an inventory loop of length k-i //if(NN[k]==NN[k+1]) self-inventorying after k steps void func1016(int k)//转换函数 { int i=0; for(i=0;i<10;i++) digits[i]=0; ostrstream out(NN[k+1],81); i=0; while(NN[k][i]!='\0')//统计NN[k]中每个数字的频度 { digits[NN[k][i]-'0']++; i++; } for(i=0;i<10;i++)//输出结果 { if(digits[i]) out<<digits[i]<<i; } out<<'\0'<<endl; } bool IsEqual(const char* str1,const char* str2) { while(*str1==*str2&&*str1!='\0'&&*str2!='\0') { str1++; str2++; } return *str1==*str2; } int main() { int k,i; for(;;) { cin>>NN[0]; if(NN[0][0]=='-') break; for(k=0;k<16;k++) { func1016(k); if(IsEqual(NN[k],NN[k+1])) { if(k==0)//第一次就成立 { cout<<NN[0]<<" is self-inventorying"<<endl; break; } else//第k次成立 { cout<<NN[0]<<" is self-inventorying after "<<k<<" steps"<<endl; break; } } for(i=0;i<k;i++) if(IsEqual(NN[i],NN[k+1])) break; if(i!=k)//出现循环 { cout<<NN[0]<<" enters an inventory loop of length "<<k+1-i<<endl; break; } } if(k==16)//做了15次转换还不能成立 cout<<NN[0]<<" 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