背景:
周末练习赛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; }