代碼一(部分錯誤)
思路:arr來存該數字的出現個數,max_element求最大個數,當等於最大個數的時候放到arrmax數組裏,從大到小排序,輸出第一個。
或者直接從最大開始往下遍歷,更簡單
#include <bits/stdc++.h>
using namespace std;
bool cmp(int a,int b){
return a>b;
}
int main()
{
int arr[1000]={0};
int index,cnt=0;
int N,n;cin>>N;
for(int i=0;i<N;i++){
cin>>n;
for(int j=0;j<n;j++){
cin>>index;
arr[index]++;
}
}
///////////////
int mmax=*max_element(arr,arr+1000);
int arrmax[1000];
int flag=0;
for(int i=0;i<1000;i++){
if(mmax==arr[i]){
arrmax[flag]=i;
flag++;
}
}
sort(arrmax,arrmax+flag,cmp);
cout<<arrmax[0]<<" "<<arr[arrmax[0]];
return 0;
/*
int mmax=*max_element(arr,arr+1000);
for(int i=1000;i>0;i--){
if(mmax==arr[i]){
cout<<i<<" "<<mmax;
break;
}
}
return 0;
*/
}
代碼二(正確)
學長說==“a數組在大點試試”== ,我試了一下,int arr[1000]={0}; 變成 int arr[1001]={0}; 對了!!好神奇
arr[1000]是從0到999下標 ,不包括1000,N(<=1000)
#include <bits/stdc++.h>
using namespace std;
bool cmp(int a,int b){
return a>b;
}
int main()
{
int arr[1001]={0};
int index,cnt=0;
int N,n;cin>>N;
for(int i=0;i<N;i++){
cin>>n;
for(int j=0;j<n;j++){
cin>>index;
arr[index]++;
}
}
int mmax=*max_element(arr,arr+1000);
for(int i=1000;i>0;i--){
if(mmax==arr[i]){
cout<<i<<" "<<mmax;
break;
}
}
return 0;
}