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

为什么我的程序会消耗那么多内存!?有什么办法么?各位大侠帮帮忙吧……谢谢了!!^_^

Posted by wxn0000 at 2005-03-16 22:15:27 on Problem 1016
#include<iostream>
#include<cstring>
#include<stdlib.h>
using namespace std;

void invent(char *, char *);
int isInv(int);

char num[16][81];

void main()
{
	int i, stat = 0;
	cin >> num[0];
	while( strcmp(num[0], "-1") )
	{
		for( i = 0; i < 15; i ++ )
		{
			invent(num[i], num[i+1]);
			stat = isInv(i+1);
			if( !stat )
				break;
		}
		if(stat)
			cout << num[0] << " can not be classified after 15 iterations" << endl;
		for( i = 0; i < 16; i ++ )
			strcpy( num[i], "\0" );
		cin >> num[0];
	}
}

void invent(char *a, char *b)
{
	int i;
	int temp[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
	int len = strlen(a);
	int blen = strlen(b);

	for( i = 0; i < len; i ++ )
		temp[ a[ i ] - '0' ] ++;
	for( i = 0; i < 10; i ++ )
	{
		if( !temp[ i ] )
			continue;
		char *t1 = new char[2];
		char *t2 = new char[3];
		sprintf(t1, "%d", i);
		sprintf(t2, "%d", temp[ i ]);
		strcat(t2, t1);
		strcat(b, t2);
	}
}

int isInv(int pos)
{
	int i, j;
	for( i = 1; i <= pos; i ++ )
	{
		if( strcmp(num[1], num[0]) == 0 )
		{
			cout << num[0] << " is self-inventorying" << endl;
			return 0;
		}
		if( strcmp(num[i], num[i-1]) == 0 )
		{
			cout << num[0] << " is self-inventorying after " << i-1 << " steps" << endl;
			return 0;
		}
		for( j = 0; j < i; j ++ )
		{
			if( strcmp(num[i], num[j]) == 0 )
			{
				cout << num[0] << " enters an inventory loop of length " << i - j << endl;
				return 0;
			}
		}
	}

	return 1;
}

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