苹果排序的问题
【问题描述】陶陶家的院子里有许多苹果树,每到秋天树上就会结出许多苹果。苹果成熟的时候,陶陶就会跑去摘苹果。经过估算,每个苹果都有一个甜度,第i个苹果的甜度为di。
陶陶把苹果按甜度堆放,他想知道哪种甜度的苹果最多。
【输入格式】
输入共有两行。
第一行,包含一个整数n,表示有n个苹果。
第二行,包含n个用空格隔开的正整数分别表示n个苹果的甜度。
【输出格式】
输出共一行,包含两个用空格隔开的整数,分别表示最多的那种苹果的甜度及有几个这样的苹果。
【输入样例】
10
100 200 200 140 129 134 167 198 200 110
【输出样例】
200 3
【数据规模】
1 ≤ di ≤ 1000
1 ≤ n ≤ 100
我的代码它就给 33 分 , 不知为什么#include <bits/stdc++.h>
using namespace std;
int main(){
int n, i, j, s=1;
vector <int> app;
scanf("%d", &n);
for(i=0; i<n; i++){
scanf("%d", &j);
app.emplace_back(j);
}
for(i=0; i<n; i++){
for(j=0; j<i; j++){
if(app > app){
swap(app, app);
}
}
}
for(i=1; i<n; i++){
if(app == app){
s++;
}
}
printf("%d %d", app, s);
return 0;
} #include <bits/stdc++.h>
using namespace std;
int main(void)
{
int i , k , n , s , app ;
scanf("%d", & n) ;
for(i = 0 ; i < n ; i ++) scanf("%d" , & app) ;
for(k = app , i = 1 ; i < n ; i ++) if(app > k) k = app ; // 确定最高糖度值
for(i = s = 0 ; i < n ; i ++) if(app == k) s ++ ; // 确定最高糖度苹果的个数
printf("%d %d\n" , k , s) ;
}
编译、运行实况
D:\\C>g++ -o x x.c
D:\\C>x
10
100 200 200 140 129 134 167 198 200 110
200 3
D:\\C> 本帖最后由 傻眼貓咪 于 2022-3-5 09:22 编辑
本来想用博耶-摩尔多数投票算法(Boyer–Moore majority vote algorithm)
但题目好像没有说明最多会超于总数的一半{:10_269:} #include <iostream>
#include <vector>
#include <utility>
int main(){
std::vector<int> apple(1001, 0); // 用于记录苹果数量
int i, n;
std::pair<int, int> ans(-1, -1); // (数量, 甜度)
std::cin >> n;
while(n--){
std::cin >> i;
apple++;
if(apple > ans.first){
ans.first = apple;
ans.second = i;
}
}
std::cout
<< ans.second
<< " "
<< ans.first
<< std::endl;
return 0;
}10
100 200 200 140 129 134 167 198 200 110200 3 本帖最后由 jhq999 于 2022-3-5 12:51 编辑
int max=0,maxsum=0,n=0,a=0;
scanf("%d",&n);
while(n--)
{
scanf("%d",&a);
if(a>max)max=a,maxsum=1;
else if(a==max)maxsum++;
} jackz007 发表于 2022-3-4 23:21
编译、运行实况
啊啊啊也没满分{:10_266:} 傻眼貓咪 发表于 2022-3-5 09:40
你的满了{:10_275:} jhq999 发表于 2022-3-5 12:45
谢谢 傻眼貓咪 发表于 2022-3-5 09:40
这个 pair 是什么东西啊 柿子饼同学 发表于 2022-3-6 22:02
这个 pair 是什么东西啊
pair 是模板,类似于 vector,仅用于储存 2 个数据(可以不同类型),用 .first 和 .second 读取数据。
页:
[1]