C++从入门到入土-4.21的七道题(排序)

1.明明的随机数


代码:

#include<cstdio>
using namespace std;
int main()
{
	freopen("random.in","r",stdin);
	freopen("random.out","w",stdout);
	int N,a[1001]={0},t;
	int count=0;//计数器 
	scanf("%d",&N);
	for(int i=0;i<N;i++)
	{
		scanf("%d",&t);
		if(a[t]==0)
		{
		  a[t]=t;
		 count++;
		}
	}
	printf("%d\n",count);
	for(int i=0;i<1001;i++)
	{
		if(a[i]!=0)
			printf("%d ",a[i]);
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}

2.车厢重组


代码:

#include<stdio.h>  
#define Max 10010  
int a[Max];  
int main()  
{  
    freopen("carry.in","r",stdin); 
	freopen("carry.out","w",stdout); 
    int n,i,j,count;  //count计数器 
	scanf("%d",&n);
    for(i=1;i<=n;i++)  
        scanf("%d",&a[i]);  
    count=0;  
    //冒泡排序 
    for(i=1;i<n;i++)  
    {  
        for(j=1;j<=n-i;j++)  
        {  
            if(a[j]>a[j+1])  
            {  
                int tmp=a[j];  
                a[j]=a[j+1];  
                a[j+1]=tmp;  
                count++;  
            }  
        }  
    }  
    printf("%d\n",count);  
 	fclose(stdin);
 	fclose(stdout);
    return 0;  
}  

3.众数

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;
int main(void)
{
	
	freopen("masses.in","r",stdin);
	freopen("masses.out","w",stdout);
	int max=0,num=0;
	int n,a[30009];
	memset(a,0,sizeof(a));
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		int x;
		scanf("%d",&x);
		a[x]++;
	}
	
	for(int i=1;i<=30000;i++)
	{
		if(a[i]>max)
		{
			max=a[i];
		}
	}
	for(int i=1;i<=30000;i++)
	{
		if(a[i]==max)
		{
			cout<< i<<' '<<max<<endl;
		}
	}
	
	return 0;
}


4.第k小整数(洛谷P1138)


代码

#include<iostream>
#include<cstdio>
using namespace std;
int a[30005];
int main()
{
	freopen("knumber.in","r",stdin);
	freopen("knumber.out","w",stdout); 
    int n,k;
    cin>>n>>k;
    for(int i=0;i<n;i++)
    {
        int x;
        cin>>x;
        a[x]=1;
    }
    for(int i=1;i<=30000;i++)
    {
        if(a[i]==1)k--;
        if(k==0)
		{
			cout<<i;
			return 0;
		}
    }
    cout<<"NO RESULT";
    fclose(stdin);
    fclose(stdout);
    return 0;
}

5.军事机密


#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int a[30002];
int main()
{
	freopen("secret.in","r",stdin); 
	freopen("secret.out","w",stdout); 
    int n,i,m,k;
    cin>>n;
    for(i=0;i<n;i++)
    cin>>a[i];
    sort(a,a+n);
    cin>>m;
    for(i=1;i<=m;i++)
    {
        cin>>k;
        cout<<a[k-1]<<endl;
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}

6.统计数字

代码

#include <cstdio>  
#include <cstdlib>  
int n;  
int a[200001];  
int cmp(const void *a,const void *b)
{  
    return *(int *)a-*(int *)b;  
}  
int main(){  
    freopen("count.in","r",stdin);  
    freopen("count.out","w",stdout);  
    scanf("%d",&n);
	  
	for (int i=1;i<=n;i++)
	{  
   		scanf("%d",&a[i]);  
	}  
	qsort(a+1,n,sizeof(int),cmp);  
	int cnt=0,s=0;  
	for (int i=1;i<=n;i++)
	{  
        if (i==1)
		{  
			s=a[i];  
			cnt++;  
			continue;  
        }  
        if (s!=a[i])
		{  
			printf("%d %d\n",s,cnt);  
			s=a[i];  
			cnt=1;  
        }  
        else if (s==a[i]) cnt++;  
	}  
	printf("%d %d\n",s,cnt); 
	
	fclose(stdin);
	fclose(stdout); 
    return 0;  
}  

7.输油管道


#include<stdio.h>  
#include<string.h>  
#include<algorithm>  
using namespace std;  
struct node  
{  
    int x,y;  
} num[200001];  
bool cmp(node a,node b)  
{  
    return a.y<b.y;  
}  
int main()  
{  
    int t;  
    scanf("%d",&t);  
    int i,j;  
    for(i=0;i<t;i++)  
    {  
        scanf("%d%d",&num[i].x,&num[i].y);  
    }  
    int ans;  
    sort(num,num+t,cmp);  
    if(t%2==1)  
    {  
        ans=0;  
        int zong=num[t/2].y;  
        for(i=0;i<t;i++)  
        {  
            ans+=abs(num[i].y-zong);  
        }  
    }  
    else  
    {  
        int zong=num[t/2].y+num[t/2-1].y;  
        zong/=2;  
        ans=0;  
        for(i=0;i<t;i++)  
        {  
            ans+=abs(num[i].y-zong);  
        }   
    }  
    printf("%d\n",ans);  
    return 0;  
}  


猜你喜欢

转载自blog.csdn.net/qq_41993986/article/details/80026656