UVa 156 Ananagrams [Ad Hoc]

来源:互联网 发布:linux中使用getch 编辑:程序博客网 时间:2024/06/16 17:24

Description

一堆字符串
如果两个能排序之后变成一样的,就是一样的
不然就是不一样的
把所有不一样的输出
按字典序
排序时候不算大小写
i.e.
Abc 和 Cba是一样

Algorithm

用map
但是map貌似不能接结构体。。。

Code

#include <cstdio>#include <cctype>#include <iostream>#include <algorithm>#include <map>using namespace std;const int maxn = 1000 + 9;map<string, int> words;struct V{  string o, r;};string repr(const string &s){  string ret = s;  for (int i = 0; i < ret.size(); i++)    ret[i] = tolower(ret[i]);  sort(ret.begin(), ret.end());  return ret;}bool cmp(const V &x, const V &y){  if (x.o < y.o) return true;  return false;}int main(){  int n = 0;  V a[maxn];  for (;;)  {    n++;    cin >> a[n].o;    if (a[n].o == "#") break;    a[n].r = repr(a[n].o);    words[a[n].r]++;  }  sort(a, a + n, cmp);  for (int i = 0; i < n; i++)  {    if (words[a[i].r] == 1) cout << a[i].o << endl;  }}
0 0