zoukankan      html  css  js  c++  java
  • 单词分类 (Standard IO)

    Description

      Oliver为了学号英语决定苦背单词,但很快他发现要直接记住杂乱无章的单词非常困难,他决定对单词进行分类。
      两个单词可以分为一类当且仅当组成这两个单词的各个字母的数量均相等。
      例如“AABAC”,它和“CBAAA”就可以归为一类,而和“AAABB”就不是一类。
      现在Oliver有N个单词,所有单词均由大写字母组成,每个单词的长度不超过100.你要告诉Oliver这些单词会被分成几类。

    Input

      输入文件的第一行为单词个数N,以下N行每行为一个单词。

    Output

      输出文件仅包含一个数,表示这N个单词分成的类数。

    题解
    我就是猪,不知道字符串也可以快排。然后暴力。

    代码

    var
      n:longint;
      s:array[1..100000] of string;
      a:string;
    procedure qsort(l,r:longint);
    var
      i,j:longint;
      mid:string;
      p:char;
    begin
      i:=l;j:=r;
      mid:=a[(l+r) div 2];
      repeat
        while a[i]<mid do inc(i);
        while a[j]>mid do dec(j);
        if i=j then begin inc(i);dec(j);end
        else
        if i<j then
          begin
            p:=a[i];a[i]:=a[j];a[j]:=p;
            inc(i);dec(j);
          end;
      until i>j;
      if l<j then qsort(l,j);
      if i<r then qsort(i,r);
    end;
    procedure qsort1(l,r:longint);
    var
      i,j:longint;
      mid,p:string;
    begin
      i:=l;j:=r;
      mid:=s[(l+r) div 2];
      repeat
        while s[i]<mid do inc(i);
        while s[j]>mid do dec(j);
        if i<=j then
          begin
            p:=s[i];s[i]:=s[j];s[j]:=p;
            inc(i);dec(j);
          end;
      until i>j;
      if l<j then qsort1(l,j);
      if i<r then qsort1(i,r);
    end;
    var
      i,j,ans:longint;
    begin
      readln(n);
      for i:=1 to n do
        begin
          readln(a);
          qsort(1,length(a));
          s[i]:=a;
        end;
      qsort1(1,n);
      j:=1;ans:=1;
      for i:=2 to  n do
        if s[i]<>s[i-1] then inc(ans);
      writeln(ans);
    end.
    
  • 相关阅读:
    eas之动态刷新Table
    eas之导入导出
    eas之事件
    eas之获得任何一个KDTable的选中行
    eas之创建一个UI界面并对其操作
    eas之style接口
    eas之指定虚模式
    eas之数据融合
    eas之kdtable格式化
    eas之视图冻结与解冻
  • 原文地址:https://www.cnblogs.com/zyx-crying/p/9319600.html
Copyright © 2011-2022 走看看