背景:
周末练习赛c题
学习:
1.把一个数组里的元素两两相加,类似于范德蒙行列式,用两个循环可完成。
2.输出最后一个数后面没有空格要单独输出。
3.把数组开在全局,可以避免爆栈,因为全局变量不管是不是静态的都储存在内存静态数据区。
#include<stdio.h>
#include <algorithm>
using namespace std;
int cmp( const int &a, const int &b ){
if( a > b )
return 1;
else
return 0;
}
int str[3000],st[4500000];
int main(void)
{
int n,m;
while(scanf("%d",&n)!=EOF)
{
int ist=0;
if(n<=1)
{
int z,x;
scanf("%d",&z);
scanf("%d",&x);
printf("%d\n",x);
}
else
{
scanf("%d",&m);
for(int i=n-1;i>=0;i--)
{
scanf("%d",&str[i]);
}
for(int j=n-1;j>=0;j--)
{
for(int k=j-1;k>=0;--k)
{
st[ist]=str[j]+str[k];
++ist;
}
}
sort(st,st+ist,cmp);
for(int l=0;l<=m-1;l++)
{
if(l!=m-1)
printf("%d ",st[l]);
else
printf("%d\n",st[l]);
}
}
}
return 0;
}