第20612题 程序题
C语言等级考试四级真题:删除数字求最大匹配位置数

娇娇刚学会识数和比大小,她在黑板上写了一串数字:2,1,2,5,4。擦掉第一个2后,剩下的序列是1,2,5,4,其中1在第1位、2在第2位、4在第4位,这三个数的数值等于其所在位置(位置从1开始计数)。

娇娇希望擦掉一部分数字,使得剩下的序列中,数值等于自身位置的数的数量尽可能多,请求出这个最大数量。

限制

  • 时间限制:1000ms
  • 内存限制:65536KB

输入

第一行一个整数TestNum(1 ≤ TestNum ≤ 10),表示测试用例组数。 每组测试用例包含两行:

  1. 第一行一个整数n(1 ≤ n ≤ 1000),表示原始数字序列的长度
  2. 第二行n个正整数,表示原始数字序列

输出

每组测试用例输出一行一个整数,表示最多有多少个数满足数值等于其在新序列中的1-based位置。

样例输入

3
5
2 1 2 5 4
7
2 2 3 2 4 5 3
10
1 1 2 2 3 3 4 4 5 5

样例输出

3
4
5

提示

  • 第一组测试数据:擦掉第一个2,得到序列[1,2,5,4],其中1(第1位)、2(第2位)、4(第4位)符合要求,共3个。
  • 第二组测试数据:删除第4、7个元素,得到序列[2,2,3,4,5],其中第2位的2、第3位的3、第4位的4、第5位的5符合要求,共4个。
  • 第三组测试数据:每组相同数值保留第一个出现的元素,得到序列[1,2,3,4,5],所有元素都符合位置要求,共5个。
编辑模式