您的位置:首页 > 编程语言 > Java开发

hdu 2651 Spring festival couplets

2015-08-31 00:12 471 查看


Spring festival couplets

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 194 Accepted Submission(s): 82



Problem Description

When the spring festival is coming , people always paste spring festival couplets onto the wall.Now dandelion's father has bought several spring festival couplets, he wants to know how many pairs of spring festival couplets can been consisted with these spring
festival couplets.As we know ,spring festival couplets are carefully balanced.Such as AABBCCDD can only be matched with AABBCCDD or BBDDEEFF or AABBAABB ...



Input

A number n stands for the number of the spring festival couplets.(2≤n≤110000)

Then n lines ,each line contains a string made by capital letters. Such as AABBCCDD,AABBCCD.The length of the string will not exceed 8.



Output

For every case ,print the number of pairs can be made by these spring festival couplets.



Sample Input

6
ABCCCDA
LLLMNNO
DEZZZBF
AAABCCD
KKKXPPQ
AAA




Sample Output

4




题意比较明确对对联,能配对的就配对问可以配多少对,直接用map映射来做,每次看看之前和当前串一样模式的出现了几次,相加就可以了,输入完就统计完了,不会重复。
然而下午比赛的时候,心情不知道为何会那么烦躁,水题都写不好,还是泡脚回家洗洗睡吧。

#include <iostream>
#include <stdio.h>
#include <string>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <map>
#include <set>
#
using namespace std;

char s[10];

int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        map<int,int>ss;
        int ans=0;
        for(int i=0;i<n;i++)
        {
            scanf("%s",s);
            int len=strlen(s);
            int p=0;
            int cnt=1;
            for(int j=0;j<len;j++)
            {
                if(j==0) p=1;
                if(s[j-1]==s[j]) p=p*10+cnt;
                else p=p*10+(++cnt);
            }
            if(len<8)
            {
                for(int j=len;j<8;j++)
                {
                     p=p*10+9;
                }
            }

            ans+=ss[p];
            ss[p]++;
        }

        printf("%d\n",ans);
    }

    return 0;
}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: