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

1002(487-3279)死活是WA,找到当年比赛的数据都测过了没啥问题,求解答

Posted by MagicYH at 2014-12-31 10:52:19
大体思路就是将输入字串解析成7位的数字,然后转换成标准格式的字串存在map里面

#include <iostream>
#include <string>
#include <math.h>
#include <map>
using namespace std;

map<string, int> statistics;

void decode(char* s)
{
    int count = 0;  // 解析数字的位数,达到7位数字的时候停止
    int index = 0;  // 输入字串索引
    int number = 0; // 解析出来的数字
    while ( count < 7 )
    {
        switch ( s[index] )
        {
            case '0':
                number = number*10;
                count++;
                break;

            case '1':
                number = number*10 + 1;
                count++;
                break;

            case '2':
            case 'A':
            case 'B':
            case 'C':
                number = number*10 + 2;
                count++;
                break;

            case '3':
            case 'D':
            case 'E':
            case 'F':
                number = number*10 + 3;
                count++;
                break;

            case '4':
            case 'G':
            case 'H':
            case 'I':
                number = number*10 + 4;
                count++;
                break;

            case '5':
            case 'J':
            case 'K':
            case 'L':
                number = number*10 + 5;
                count++;
                break;

            case '6':
            case 'M':
            case 'N':
            case 'O':
                number = number*10 + 6;
                count++;
                break;

            case '7':
            case 'P':
            case 'R':
            case 'S':
                number = number*10 + 7;
                count++;
                break;

            case '8':
            case 'T':
            case 'U':
            case 'V':
                number = number*10 + 8;
                count++;
                break;

            case '9':
            case 'W':
            case 'X':
            case 'Y':
                number = number*10 + 9;
                count++;
                break;

            default:
                break;
        }
        index++;
    }

    // 转换成标准呢字符串
    char buff[8] = {0};
    int temp;
    for (int i = 0; i < 7; i++)
    {
        temp = (number/(int)pow(10.0, i))%10;
        buff[7-i] = (char)(temp + '0');
    }
    for (int i = 0; i < 3; i++)
    {
        buff[i] = buff[i+1];
    }
    buff[3] = '-';

    // 插入map并且计数
    string ss(buff);
    map<string, int>::iterator iter;
    iter = statistics.find(ss);
    if ( iter == statistics.end() )
    {
        statistics.insert(pair<string, int>(ss, 1));
    }
    else
    {
        (iter->second)++;
    }
}

int main(int argc, char const *argv[])
{
    int n;
    int count = 0;
    char buff[1000] = {0};
    cin>>n;
    while ( count < n )
    {
        cin>>buff;
        decode(buff);
        count++;
    }

    // 输出结果
    bool output = false;
    if ( !statistics.empty() )
    {
        map<string, int>::iterator iter;
        for (iter = statistics.begin(); iter != statistics.end(); iter++)
        {
            if ( iter->second > 1 )
            {
                cout<<iter->first<<" "<<iter->second<<endl;
                output = true;
            }
        }
        if ( !output )
        {
            cout<<"No duplicates."<<endl;
        }
    }
    else
    {
        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