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

Re:一直是WA,请高手看一下什么原因,谢谢

Posted by YaoJiaShu at 2020-06-02 16:07:38 on Problem 1002
In Reply To:一直是WA,请高手看一下什么原因,谢谢 Posted by:kurt1234 at 2019-07-15 13:15:13
> #include <iostream>
> #include <string>
> #include <vector>
> #include <map>
> #include <stdlib.h>
> #include <algorithm>
> #include <math.h>
> 
> using namespace std;
> 
> inline int change(char a)
> {
> 	switch (a){
> 		 
> 	 	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 convert(string number)
> {
> 	int rNumber  = 0;
>     //covert the letter to number
>     string::iterator i = number.begin();
> 	for(int j = 6 ; i != number.end(); i++, j--)
> 	{
> 		 
> 	 	//trim the '-' in number
> 		if(*i == '-' || *i == 'Q' || *i == 'Z'){
> 			number.erase(i); i--,j++;continue;
> 		}else if(*i>='A' && *i <= 'Z'){
> 			//change letter to number
> 			rNumber += change(*i) * pow(10.0,j);
> 			continue;
> 		}else{
> 			rNumber += (*i - '0' ) * pow(10.0,j);
> 		}	 //ignore original number	
> 		 				 		 
> 	}
> 	
> 	return rNumber;
> }
> 
> int Compare(const void  *one,const void *two)
> {
> 	int a = *((int*)one);
>     int b = *((int*)two);
> 	if (a<b)
>        return -1;
>     if (a == b)
>        return 0;
>     return 1;
> }
> 
> int main(){
> 	
> 	//get the number of the list
> 	vector<string>::size_type nLen = 0;
> 	cin >> nLen;
> 	//map<string,int> resultList; 
> 	//input to numberList
> 	vector<int> numberList;
> 	
> 	for(int i = 0; i < nLen; i++)
> 	{
> 		string number;
> 		cin >> number;
> 		int result = convert(number);
> 		numberList.push_back(result);
> /*		map<string,int>::iterator iter = resultList.find(result);
> 		if(iter == resultList.end())
> 		{
> 			pair<string,int> value(result,1);
> 			resultList.insert(value);
> 		}else{
> 			iter->second += 1;
> 		}*/
> 		
> 	}
> 	
> 	/*for(map<string,int>::iterator i = resultList.begin(); i != resultList.end(); i++)
> 	{
> 		if(i->second == 1)
> 		{
> 			//cout << i->first <<" No duplicates." << endl;
> 			continue;
> 		}else{
> 			cout << i->first <<" "<< i->second << endl;
> 		}
> 		//cout << i->first <<" "<< i->second << endl;
> 	}
> 	*/
> 	 
>  
> 	
> 	qsort(&numberList[0],nLen,sizeof(int),Compare);
> 	
> 	bool flag = false;
> 	for(vector<int>::iterator i = numberList.begin(),j = i; i != numberList.end(); i = j )
> 	{
> 		
> 		int count  = 0;
> 		while(*i == *j){
> 			count++;
> 			j++;
> 		};
> 		
> 		if(count > 1)
> 		{
> 			cout << *i/10000<<"-"<<*i%10000<<" "<<count << endl;
> 			flag = true;
> 		}
> 		//if(j == numberList.end()) break;
> 	}
> 	
> 	if(!flag)cout<< "No duplicates.\n";
> 	
> 	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