今天有一个题的sort和选择排序,我认为两个都是可以的,但选择排序却总是有点问题,不明白为什么。
#include<stdio.h>
#include<iostream>
#include<algorithm>
#define N 1000
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int n,a[N],i,j,k,sum,c,temp,count;
long int m;
scanf("%d",&n);
scanf("%d",&m);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n,cmp);
sum=0;
for(c=0;c<n;c++)
{
if(sum>=m)
break;
sum+=a[c];
}
printf("%d\n",c);
return 0;
}
#include<stdio.h>
#define N 1000
int main()
{
int n,a[N],i,j,k,sum,c,temp,count;
long int m;
scanf("%d",&n);
scanf("%d",&m);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[k]<a[j])
k=j;
if(i!=k)
{
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
}
int sum=0;
for(c=0;c<n;c++)
{
if(sum>=m)
break;
sum+=a[c];
}
printf("%d\n",c);
}
return 0;
}
这个其实并不理解到底怎么回事,只是见都这样写的。
while(scanf(“%d%d”,&n,&m)!=EOF)