给定一个含有n个元素的数组a,每次你可以选两个不同位置的数删除,目标把数组删成所有数都不相同(或者删为空数组),你会发现这个目标一定能实现。
请问实现目标时,数组的元素最多可能为多少?
第一行一个整数T,表示数据组数
接下来T组数据,对于每组数据,第一行一个整数n,表示数组元素个数,第二个n个整数,表示a[i]
T行,每行一个整数,表示答案
4
6
2 2 2 3 3 3
5
9 1 9 9 1
4
15 16 16 15
4
10 100 1000 10000
2
1
2
4
对于100%的数据,1<=T<=1000,1<=n<=50,1<=a[i]<=1000
希望可以采纳
```c++
/*就是找数组中有几个不同的元素的,但是因为一次删除两个数字,所以要考虑是否减一的情况*/
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=1e6+10;
int cnt[N];
int main()
{
int t;
cin>>t;
while(t--)
{
memset(cnt,0,sizeof(cnt));
int n;
cin>>n;
int count=0;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
if (cnt[x]==0)
{
cnt[x]=1;
count++;
}
}
if((n-count)%2!=0)count--; //因为每次删除两个数字,所以如果有重复个数的数字是奇数个,需要减一
cout<<count<<endl;
}
return 0;
}
/*
4
6
2 2 2 3 3 3
5
9 1 9 9 1
4
15 16 16 15
4
10 100 1000 10000
*/
```
定义一个字典,把不相同的数字插入,得到所有不同数字的个数m,原来的数字为n
如果m、n都是偶数或者奇数,输出m,否则输出m-1
代码就不写了,心态崩了,早上写了一个程序,那个题主直接无满意结题。你要代码,可以采纳一下,我再写。
【以下回答由 GPT 生成】
请问在实现目标时,删除的是两个相同的数还是两个不同的数?
【相关推荐】