C语言等级考试四级真题:删除数字求最大匹配位置数
娇娇刚学会识数和比大小,她在黑板上写了一串数字:2,1,2,5,4。擦掉第一个2后,剩下的序列是1,2,5,4,其中1在第1位、2在第2位、4在第4位,这三个数的数值等于其所在位置(位置从1开始计数)。
娇娇希望擦掉一部分数字,使得剩下的序列中,数值等于自身位置的数的数量尽可能多,请求出这个最大数量。
限制
- 时间限制:1000ms
- 内存限制:65536KB
输入
第一行一个整数TestNum(1 ≤ TestNum ≤ 10),表示测试用例组数。
每组测试用例包含两行:
- 第一行一个整数
n(1 ≤ n ≤ 1000),表示原始数字序列的长度 - 第二行
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个。
本题为编程题,提交代码并运行通过测试点后判分。
正在加载题目数据…
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析