题解 P1271 【【深基9.例1】选举学生会】
这是一道由黄色降为橙色的深基题目
主要就是排序
个人觉的得它作为一道橙题还是比较合适的
下面我说说直接用sort做的办法
#include<bits/stdc++.h>
//来个万能头
using namespace std;
int main()
{
int a[2000001],n,m;//注意数组范围,不要开小了
scanf("%d%d",&n,&m);//来个输入
for(int i=1;i<=m;i++)
scanf("%d",&a[i]);
sort(a+1,a+m+1);//排序
for(int i=1;i<=m;i++)
printf("%d ",a[i]);//输出
return 0;
}
这应该是比较简单的做法了,输入,排序,然后直接输出 另外我再给大家介绍一下我最初的做法 这应该是比较基础的方法
#include<cstdio>
using namespace std;
int main()
{
int a[2000001],n,b,m,c;//定义一下,开数组
scanf("%d%d",&n,&m);//输入
for(int i=1;i<=m;i++)
scanf("%d",&a[i]);//输入数组
for(int i=1;i<=m;i++){
for(int j=i;j>0;j--){//倒着往回找
if(a[j]>=a[i]){//看看有没有比现在的数大的
b=a[j];
a[j]=a[i];
a[i]=b;//换位置
}
for(int k=i;k<=m;k++){//再往后找
if(a[k]<a[i])//找找有没有比现在的数小的
{
c=a[k];
a[k]=a[i];
a[i]=c;//换位置
}
}
}
}
for(int i=1;i<=m;i++)
printf("%d ",a[i]);//输出
return 0;
}
这个代码理论上应该是没错的,但是由于题目的数据范围比较大,会超时(我WA了6次就是因为TLE),数据范围较小的情况下可以参考一下