这个代码是错误的
一开始我的思路是用sort排一下序列,然后通过数组前面和后面一样来直接计数,
这个直接计算让工程量比较大,没有细分成最小的点。
并且这个代码虽然过了输出但是不对。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a;
cin>>a;
int b;
int c[105];
int d[105];//复制i相同的
int f = 1;//灯来判断
for(int i = 0 ; i < a;i++)
{
int f = 1;
cin>>b;
for(int j = 0; j < b ;j++)
{
cin>>c[j];
}
for(int j = 0; j < b ;j++)
{
sort( c , c + b);
if(c[j]==c[j+1]&&c[j+1]==c[j+2])
f++;
}
if(f==1)cout<<f<<endl;
else if(f+1<b)cout<<f+1<<endl;
else cout<<"0"<<endl;
}
}
而后这个代码把一步分成两步,第一步先存一下最小的数,然后再经过通过一遍数组让他记一下有几个最小的数,最后让总数减去最小的数就可以实现删除几个了
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a;//几组数据
cin>>a;
int b;//每组数据有几个
int c[105];
for(int i = 0 ; i < a;i++)
{
int mina = 0xff;
cin>>b;
for(int j = 0; j < b ;j++)
{
cin>>c[j];
}
//输入数组
for(int j = 0; j < b ;j ++)
{
if(mina > c[j])mina = c[j];
}
int deng = 0;
for(int k = 0;k < b ;k ++)
{
if(mina == c[k])deng++;
}
cout<<b-deng<<endl;
}
}