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

WA9次了,好坑啊,一定要注意Q和Z要和“-”一样过滤掉!!(比较常规的代码,内存900,时间700)

Posted by bredang at 2019-05-03 22:07:55 on Problem 1002
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

inline int translate(char before_tran)
{
	switch (before_tran)
	{
	case 'A':case 'B':case 'C': return 2;
	case 'D':case 'E':case 'F': return 3;
	case 'G':case 'H':case 'I': return 4;
	case 'J':case 'K':case 'L': return 5;
	case 'M':case 'N':case 'O': return 6;
	case 'P':case 'R':case 'S': return 7;
	case 'T':case 'U':case 'V': return 8;
	case 'W':case 'X':case 'Y': return 9;
	default:break;
	}
}

int main()
{
	int num, judge = 0;
	int target[7];
	vector<unsigned int> num_int;
	cin >> num;
	for (int i = 0; i < num; i++)
	{
		string number;
		int num_tran[7];
		int num_tran_index = 0;
		cin>>number;
		for (int j = 0; number[j] != '\0'; j++)
		{
			if (number[j] <= '9' && number[j] >= '0')
			{
				num_tran[num_tran_index] = number[j] - '0';
				num_tran_index++;
			}
			else if (number[j] == '-' || number[j] == 'Q' || number[j] == 'Z')
			{
				continue;
			}
			else
			{
				num_tran[num_tran_index] = translate(number[j]);
				num_tran_index++;
			}
		}
		num_int.push_back(num_tran[0] * 1000000 + num_tran[1] * 100000
			+ num_tran[2] * 10000 + num_tran[3] * 1000
			+ num_tran[4] * 100 + num_tran[5] * 10 + num_tran[6]);
	}
	sort(num_int.begin(), num_int.end());
	int count = 0;
	for (int i = 0, j = 1;j < num;)
	{
		if (num_int[i] == num_int[j])
		{
			j++;
			if (j == num)
			{
				count = j - i;
				printf("%03d-%04d %d\n", num_int[i] / 10000, num_int[i] % 10000, count);
			}
		}
		else
		{
			count = j - i;
			if (count == 1)
			{
				i++; j++; judge++;
			}
			else
			{
				printf("%03d-%04d %d\n", num_int[i] / 10000, num_int[i] % 10000, count);
				i = j;
				j++;
			}
		}
	}
	if (judge == num - 1)
	{
		cout << "No duplicates." << endl;
	}

	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