| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:一直是WA,请高手看一下什么原因,谢谢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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator