数据排序 C++

题目 2973: 出现次数超过一半的数

#include<iostream>
using namespace std;
int main()
{
    int n,a[1005],b[1005],ch=0;
    double av;
    cin>>n;
    av=(double)n/2.0;
    //cout<<av<<endl;用于测试数组的一半是整数还是浮点数
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
        b[a[i]]++;
    }
    for(int i=-49;i<50;i++)
    {
        if(b[i]>av)
        {
            cout<<i<<" ";
            ch++;
        }
    }
    if(ch==0)
    cout<<"no";
    return 0;
}

注意点:

1.b[a[i]]相当于把a[i]的那个数字所在数组的位置++

2.然后进行ch++,这个代表是检查,一个数组当中是否存在数字是数组的一半多,如果不存在要输出no

3.还有一个值得注意的点是,数组的一半应该被设置为double数组,存在奇数数组,.

题目 1099: 校门外的树
 

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int l,m,a[105],b[105],dd[10005],sum=0,temp;//如果是dd[10005]={1}
    //这种情况下只会使得dd[10005]也就是数组的最后一个数为1;
    cin>>l>>m;
    for(int i=0;i<m;i++)
    {
        cin>>a[i]>>b[i];
    }
    for(int k=0;k<=l;k++)//要记得初始化,如果不初始化,有些c语言版本
    //无法识别出初始数组全部都是多少
    {
        dd[k]=1;//1代表从0到l都有一棵树
    }
    for(int i=0;i<m;i++)
    {
        if(b[i]<a[i])
        {
            temp=a[i];
            a[i]=b[i];
            b[i]=temp;
        }
        
        for(int j=a[i];j<=b[i];j++)
        {
          dd[j]=0;  
        }
    }
    for(int j=0;j<=l;j++)
    {
        if(dd[j]==1)
        sum++;
    }
    cout<<sum;
 
    return 0;
}

主要:原来有树的地方设置为1,下面出现的范围,在范围内设置为0,最后统计1的总数,就是剩下树木的数量.

posted @   克隆窝  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示