BJTU 郁金香

题面描述

春天到了,校园里开满了郁金香。 Infinity 经过花坛的时候,常常会停下来数郁金香玩。

Infinity 会分别统计不同颜色的花出现的次数,并把它们按照出现次数从多到少排序。

这次 Infinity 来到了一个很大的花坛前,和往常一样继续数郁金香。

不料,他数到一半时突然忘记数到哪了。 Infinity 不想从头开始数了,你能帮帮他吗?

输入数据

第一行有一个整数 t (1 ≤ t ≤ 100) ,表示有 t 组数据。

对于每组数据:

第一行有两个整数 n, m (1 ≤ n, m ≤ 100) ,表示花坛的长和宽;

接下来 n 行,每行有一个长度为 m 且由大写字母组成的的字符串,表示对应位置出现的花的种类。其中,相同的字母表示相同的花,不同的字母表示不同的花。

输出数据

对于每组数据:

第一行输出一个整数 k ,表示花坛中一共有 k 种不同的花。

接下来 k 行,每行输出一个整数 x 和一个字符 c ,表示出现了 x 个种类为 c 的花。

你需要按花出现的次数从大到小的顺序输出,如果多种花数量相同,请按花的种类从小到大输出。

样例输入

1
3 3
ABC
BBC
CCC

样例输出

3
5 C
3 B
1 A

 

解题思路(菜鸟)

     以二维数组的方式存放花坛的花(字母),统计出现的种类及数量,经过排序(要求:数量多在前,相同时ASIIC小在前)输出。

 

解题过程

      中间出现了全局变量未清零的情况,导致未能AC。经过大神的指导,找到了问题所在,并且优化了代码结构。最终AC之后,代码的运行速度从0.048到0.028。

--1 全局变量清零代码

int Count[26] ;// 26个字母数量统计
char Str[26] ;// 存放26个字母
void Reset()// 全局变量清零
{
    for (int i = 0 ; i < 26 ; i++)
    {
        Count[i] = 0 ;
        Str[i] = 0 ;
    }
}

--2 优化代码

   我的

void Flower(char F)// 识别花坛的花,并存放
{
    char FF[26] =
    {
        'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' ,
        'H' , 'I' , 'J' , 'K' , 'L' , 'M' , 'N' ,
        'O' , 'P' , 'Q' , 'R' , 'S' , 'T' ,
        'U' , 'V' , 'W' , 'X' , 'Y' , 'Z'
    };
    for (int i = 0 ; i < 26 ; i++)
        if (F == FF[i])
        {
            Str[i] = FF[i] ;
            Count[i] = Count[i] + 1 ;
        }
}

    大神的

void Flower(char F)
{
    Str[F-'A'] = F ;
    Count[F-'A']++ ;
}

 

全部程序代码如下:

免key版,511U盘资源,速度很快!经测试全部可下 课程分四个大章节 初级篇,中级篇,进阶篇,高级篇 初级篇内容:编写一个完整的,简单的外挂 C++的数据类型:Byte,Word,DWORD,int,float API函数的调mouse_event,GetWindowRect,SetCursorPos,FindWindow,SendMessage) CE5.4工具的使用方法 中级篇内容:调试工具的使用技巧,功能CALL的概念 调试工具OD1.1的使用技巧(如硬件断点,条件断点,内存断点。 常用汇编指令与对应高级语言的转换。 游戏功能CALL概念 找第一个功能CALL 外挂框架的构建(通用) 进阶篇内容:分析游戏内部数据,分析常用功能CALL 游戏数据实践找各种功能CALL(如打怪,选怪,物品使用,技能栏之类)及相应的代码编写 高级篇内容:编写完整外挂 完成一个相对完整的外挂,实现 自动挂机,打怪,存放物品之类的功能 1 入门篇.以《QQ连连看为例》 1.1、一个最简单的外挂 1.1.1、游戏窗口数据分析(SPY++) a、取得窗口相对坐标 b、读出游戏窗口信息GetWindowRect c、移动鼠标指针SetCursorPos 1.1.2 用VC++写个最简单的外挂(实现游戏开局) a、鼠拟鼠标单击mouse_event b、鼠标指针移动还原 c、集成到startgame函数里 1.2、用CE查找棋盘数据 1.2.1、CE中的数据类型 a、数据类型:Bit,Byte,Word,Dword,float,double b、用CE查找出坐位号; c、保存分析数据 1.2.2、编程读出坐位号; a、远程读取进程数据 b、打开远程进程 c、读取远程进程数据 1.2.3、用CE查出棋盘基址; a、找棋盘数据基址 b、分析棋盘数据结构 1.2.4、读出当前棋盘数据 a、编程读出棋盘数据 b、棋盘数据显示出来 1.3、用模拟技术编制外挂 1.3.1 分析棋子与棋盘坐标关系 a、鼠标软件模拟,函数SendMessage b、分析窗口内棋子相对坐标X,Y c、软件模拟点击棋盘坐标x,y处的棋子 1.3.2 消掉一对棋子的算法框架 a、遍历棋盘同类型棋子配对 b、构建算法框架 1.3.3 (Check2p)大致框架(算法核心) a、在这一对棋子间找相通路径的原理 b、(Check2p函数)框架代码 c、(CheckLine函数)检测2点是否有连通. 1.3.4 CheckLine实现 a、CheckLine函数实现 b、Check2p核心代码架构 1.3.5 Check2p完整代码实现 1.3.6 编写完整外挂,界面美化 1.4、游戏加速.去掉对动画效果.非HOOK 1.4.1:用OD找出 动画延时代码 1.4.2:写代码去掉延时,实现游戏加速 2 中级篇 以热血江湖为例 2.1、分析前的准备..CALL简介: 2.1.1、CALL调用示例分析.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值