zoukankan      html  css  js  c++  java
  • Anagram Groups(字符串)

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2316

    理解错一点题意就能WA到死。。。题中对于重复的单词,只输出一个,但是重复的单词个数要加上

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <iostream>
     4 #include <string>
     5 #include <algorithm>
     6 #include <vector>
     7 #include <map>
     8 using namespace std;
     9 const int N=100010;
    10 int vis[N];
    11 vector<string>v[N];
    12 map<string,int>mp;
    13 struct node
    14 {
    15     int Size;
    16     int num;
    17     friend bool operator < (node a,node b)
    18     {
    19         if (a.Size == b.Size)
    20         {
    21             return v[a.num][0] < v[b.num][0];
    22         }
    23         return a.Size > b.Size;
    24     }
    25 } G[N];
    26 int main()
    27 {
    28     string s[N],s2[N];
    29     char ss[N];
    30     int  i = 0;
    31     mp.clear();
    32     while(scanf("%s",ss)!=EOF)
    33     {
    34         if(ss[0]=='0')
    35             break;
    36         mp[ss]++;
    37         if(mp[ss]==1)
    38         {
    39             s[i] = ss;
    40             sort(ss,ss+strlen(ss));
    41             s2[i++] = ss;
    42         }
    43     }
    44     int n = i;
    45     int p = 0;
    46     memset(vis,0,sizeof(vis));
    47     for (int j = 0; j < n; j++)
    48     {
    49         if (vis[j])
    50             continue;
    51         int Size = 0;
    52         for (int k = j; k < n; k++)
    53         {
    54             if (s2[j]==s2[k])
    55             {
    56                 vis[k] = 1;
    57                 v[p].push_back(s[k]);
    58                 if(mp[s[k]]>1)
    59                     Size+=mp[s[k]]-1;
    60             }
    61         }
    62         G[p].Size = v[p].size()+Size;
    63         G[p].num = p;
    64         sort(v[p].begin(),v[p].end());
    65         p++;
    66     }
    67     sort(G,G+p);
    68     if (p > 5)
    69         p = 5;
    70     for (int j = 0; j < p; j++)
    71     {
    72         printf("Group of size %d:",G[j].Size);
    73         for (int k = 0; k < v[G[j].num].size(); k++)
    74         {
    75             cout<<" "<<v[G[j].num][k];
    76         }
    77         printf(" .
    ");
    78     }
    79     return 0;
    80 }
    View Code
  • 相关阅读:
    21 viewPager--- hzScrollView ----llContainer
    21 ViewPager RadioGroup
    CLEAR REFRESH FEEE的区别
    在ALV中更新数据库表
    cl_gui_cfw=>flush
    cl_gui_cfw=>dispatch
    数据库表-DD01L DD02L DD03L-保存数据表和域的消息
    SAP 锁机制
    ABAP 搜索帮助
    SAP Basis常用事务代码
  • 原文地址:https://www.cnblogs.com/lahblogs/p/3527073.html
Copyright © 2011-2022 走看看