题目在这里https://www.luogu.com.cn/problem/P1097
代码上标注的两个地方是什么意思呢?
谢谢大家!
#include <bits/stdc++.h>
using namespace std;
int a[200050];
int main(){
int n,i,k,s=1;
cin>>n;
for (i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
a[n]=-10000000;//理解不了这个语句是干什么用的
for (i=1;i<=n;i++)
if (a[i]==a[i-1]) s++;
else {cout<<a[i-1]<<' '<<s<<endl;s=1;}//这里是怎么实现计数的捏?
return 0;
}
总共有n个数,存放在0~n-1的位置,计数逻辑是用后一个(i)和当前(i-1)进行比较,所以最后一个数a[n-1]要和a[n]比较,a[n]=-10000000只是随机的,只要不在规定的自然数范围内都可以随便写,主要确保和最后一个数a[n-1]不相等。
计数规则是:如果当前数和上一个数相等则个数+1,不相等则是没出现过的自然数,新自然数个数重置为1。