当你循环输入的时候我们有几种方法
一:while(scanf("%d %d",&a,&b)!=EOF)//>0//==1
反正有很多种,但是今天早上我用两个代码提交发现了问题
相同的算法但是第一个超时
#include<iostream>
#include<stdio.h>
#define max 1000000+10
#include<algorithm>
using namespace std;
int a[max];
int cmp(int a,int b)
{
return a>b;
}
int main()
{
int i,j,k,l;
while(scanf("%d %d",&i,&j)&&i)//这是关键
{
for(k=0;k<i;k++)
{
scanf("%d",&a[k]);
}
sort(a,a+i,cmp);
for(k=0;k<j-1;k++)
printf("%d ",a[k]);
printf("%d\n",a[j-1]);
}
return 0;
}
第二个就过了:
#include<iostream>
#include<stdio.h>
#define max 1000000+10
#include<algorithm>
using namespace std;
int a[max];
int cmp(int a,int b)
{
return a>b;
}
int main()
{
int i,j,k,l;
while(scanf("%d %d",&i,&j)>0)//这个是正确的
{
for(k=0;k<i;k++)
{
scanf("%d",&a[k]);
}
sort(a,a+i,cmp);
for(k=0;k<j-1;k++)
printf("%d ",a[k]);
printf("%d\n",a[j-1]);
}
return 0;
}
感觉不明觉厉啊,orz