当你循环输入的时候我们有几种方法
一: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 ",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 ",a[j-1]); } return 0; }
感觉不明觉厉啊,orz