| ||||||||||
| 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 "stdio.h"
#include "stdlib.h"
#include "string.h"
#define TIMES 17 //求inventory的次数
#define LEN 165 //每个inventory的最大长度.
void main()
{
void _free(struct str *&p);
void print(char *p,int n1,int n2);
void getinventory(char p[][LEN],int n);
char str[TIMES][LEN];
int i,k,t;
while(1)
{
scanf("%s",str[0]);
if(str[0][0]=='-')break;
for(i=1;i<=16;i++)
{
getinventory(str,i);//求得string[i-1]的目录数字,存于string[i]中.
for(k=i-1;k>=0&&strcmp(str[i],str[k])!=0;k--);
if(k>=0)break;
}
if(i==17)i--;
print(str[0],i,k);
}
}
void getinventory(char p[][LEN],int n)//求得p[i-1]的inventory,存于p[i]中.
{
void chang(char *p,int &pos,int n,char c);
int count,i,posi=0;
char c,*p1;
for(c='0';c<='9';c++)
{
for(p1=p[n-1],i=count=0;p1[i]!='\0';i++)
if(c==p1[i])count++;
chang(p[n],posi,count,c);
}
}
void chang(char *p,int &pos,int n,char c)//将整数n转化成字符'0','1'....存放pos开始的空间.
//然后将c也存入.
{
if(n)
{ int w=1;
while(n%(w*10)!=n)w*=10;
for(;w>0;n%=w,w/=10)p[pos++]='0'+n/w;
p[pos++]=c;
p[pos]='\0';
}
}
void print(char *p,int n1,int n2)
{
if(n1==1)printf("%s is self-inventorying\n",p);
else if(n2==n1-1)printf("%s is self-inventorying after %d steps\n",p,n2);
else if(n1==16)printf("%s can not be classified after 15 iterations\n",p);
else printf("%s enters an inventory loop of length %d\n",p,n1-n2);
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator