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

为什么VC下正确但是提交在线编译是错的呢?

Posted by winshare at 2008-04-07 19:22:24 on Problem 1002
// phoneMatch.cpp : Defines the entry point for the console application.
//
#include <vector> 
#include <list> 
#include <map> 
#include <set> 
#include <deque> 
#include <queue> 
#include <stack> 
#include <bitset> 
#include <algorithm> 
#include <functional> 
#include <numeric> 
#include <utility> 
#include <sstream> 
#include <iostream> 
#include <iomanip> 
#include <cstdio> 
#include <cmath> 
#include <cstdlib> 
#include <cctype> 
#include <string> 
#include <cstring> 
#include <cstdio> 
#include <cmath> 
#include <cstdlib> 
#include <ctime> 

using namespace std;  

#define LN(X) ((int)(X.length()))
#define SZ(X) ((int)(X.size()))
#define MAX 50

class phoneMatch{

private:
	int exchange[MAX][2];
	int resultNum[MAX];

public:
inline int exchangeChar(char ch)
{
	if(ch >= 'A' && ch <= 'C')
		return 2;
	if(ch >= 'D' && ch <= 'F')
		return 3;
	if(ch >= 'G' && ch <= 'I')
		return 4;
	if(ch >= 'J' && ch <= 'L')
		return 5;
	if(ch >= 'M' && ch <= 'O')
		return 6;
	if(ch == 'P' || ch == 'R' || ch == 'S')
		return 7;
	if(ch >= 'T' && ch <= 'V')
		return 8;
	if(ch >= 'W' && ch <= 'Y')
		return 9;
	return 0;

}

public:
void phonematch(int n, vector <string> str)
{
	memset(exchange, 0, sizeof(exchange));
	memset(resultNum, 0, sizeof(resultNum));
	int exchangeNum = 0;
	int maxNum = 1;
	int leastIndex = -1;
	int leastValueA = 999;
	int leastValueB = 9999;
	
	for(int i = 0; i < SZ(str); i++)
	{	
		int temp[2] = {0,0};
		int count = 0;
		int value = 0;
		int length = LN(str[i]);
		int loc = 0;
		int k = 0;
		int flag = 0;
                //format the phone number
		for(int j = 0; j < length; j++)         
		{
			char ch = str[i].at(j);
			if(ch == '-')
				continue;
			if(ch >= '0' && ch <= '9' )
			{
				value *= 10;
				value += (ch -'0');
				count++;
			}
			else if(ch >= 'A' && ch <= 'Z' )
			{
				value *= 10;
				int result = exchangeChar(ch);
				if(result == 0)
				{
					cout << "error!";
					return;
				}
				value += result;
				count++;
			}
			else
			{
				cout << "error!";
				return;
			}
			if(count == 3)
			{
				temp[loc] = value;
				value = 0;
				count = -1;
				loc++;			
			}
			
		}
                //count the times
		for(k = 0; k < exchangeNum; k++)
		{
			if((temp[0] == exchange[k][0]) && (temp[1] == exchange[k][1]))
			{
				flag = 1;
				resultNum[k]++;
			}
		}
		if(flag == 0)
		{
			exchange[exchangeNum][0] = (int)temp[0];
			exchange[exchangeNum][1] = (int)temp[1];
			resultNum[exchangeNum] = 1;
			exchangeNum++;
		}
	}
        //show the result
	for(int i = 0; i < exchangeNum; i++)
	{
		if(maxNum < resultNum[i])
			maxNum = resultNum[i];
	}
	if(maxNum == 1)
	{
		cout << "No duplicates.";
		return;
	}
        //show as ascent
	for(int k = 0; k < exchangeNum; k++)
	{
		for(int i = 0; i < exchangeNum; i++)
		{
		
			if(resultNum[i] > 1)
			{
				if(exchange[i][0] < leastValueA || ((exchange[i][0] == leastValueA) && (exchange[i][1] < 

leastValueB)))
				{
					leastValueA = exchange[i][0];
					leastValueB = exchange[i][1];
					leastIndex = i;
				}

			}
		}
		if(leastIndex != -1)
		{
			cout << exchange[leastIndex][0] << "-" << exchange[leastIndex][1] << " " <<resultNum[leastIndex] << 

endl;
			resultNum[leastIndex] = 1;
			leastIndex = -1;
			leastValueA = 999;
			leastValueB = 9999;
		}
	}




		
}
};

int main(int argc, char* argv[])
{
	int n;
	cin >> n;
	string temp;
	vector <string> str;
	getline(cin,temp);
	for(int i = 0; i < n; i++)
	{	
		cin.clear();
		getline(cin,temp);
		str.insert(str.end(),temp);
	}
	phoneMatch* ptr = new phoneMatch;
	ptr->phonematch(n,str);
	return 0;
}


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