Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

1016题快把我折磨死了,救救我!SOS!!程序如下:

Posted by qaz at 2004-03-05 00:06:04
#include<iostream.h>
#include<string.h>

char Number[16][80];
int IsInventory;

void GetInventory(int n)
{
	int i=0,j=0;
	int DigitNum[10]={0,0,0,0,0,0,0,0,0,0};

	while(Number[n][i]-'0'>=0 && Number[n][i]-'9'<=0){
		DigitNum[Number[n][i]-'0']++;
		i++;
	}

	for(i=0;i<10;i++){
		if (DigitNum[i]!=0){
			if (DigitNum[i]>10){	//一种数字的个数可能大于10 (占两位)
				Number[n+1][j]=DigitNum[i]/10+'0';
				j++;
			}
			Number[n+1][j]=DigitNum[i]%10+'0';
			Number[n+1][j+1]=i+'0';
			j=j+2;
		}
	}
	Number[n+1][j]='\0';	//字符串结尾加'\0'
}

void main()
{
	int i,j;

	while(Number[0][0]!='-'){
		for (i=0;i<16;i++)
			strcpy(Number[i],"");
		IsInventory=0;
		cin>>Number[0];
		if (Number[0][0]!='-'){
			for (i=0;i<15 && IsInventory==0;i++){
				GetInventory(i);
				//cout<<Number[i+1]<<endl;////
				for (j=0;j<i+1 && IsInventory==0;j++){
					if (strcmp(Number[i+1],Number[j])==0){
						IsInventory=1;
						if (i==0)
							cout<<Number[0]<<" is self-inventorying"<<endl;
						if (i!=0 && i==j)
							cout<<Number[0]<<" is self-inventorying after "<<i<<" steps"<<endl;
						if (i!=0 && i!=j)
							cout<<Number[0]<<" enters an inventory loop of length "<<i-j+1<<endl;
					}
				}
			}
			if (IsInventory==0)
				cout<<Number[0]<<" can not be classified after 15 iterations"<<endl;
		}
	}
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator