这道题为什么会输出这么多0?
原题:现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。
例如:
The array is [1 3 -1 -3 5 3 6 7], and k = 3.
http://oj.
代码是:
程序代码:
#include<iostream> #include<cstdlib> #include<iomanip> using namespace std; const int MAXN=1000000; int a[MAXN],n,maxc[MAXN],minc[MAXN],ka; void print(int,int); void couta(); int main() { int k; cin>>n>>k; ka=k; for(int i=1;i<=n;i++) cin>>a[i]; print(1,k); system("pause"); return 0; } void print(int in,int k) { int maxa,mina; maxa=max(a[in],a[in+1]); mina=min(a[in],a[in+1]); for(int i=in;i<=k;++i) { int maxb,minb; maxb=max(a[i],a[i+1]); minb=max(a[i],a[i+1]); if(maxb>maxa) maxa=maxb; if(minb<mina) mina=minb; } maxc[in]=maxa; minc[in]=mina; int c=in+ka+1; if(c<n) print(in+1,k+1); else couta(); } void couta() { int sa=n-ka; for(int i=1;i<=sa;++i) cout<<setw(3)<<minc[i]; cout<<endl; for(int i=1;i<=n;++i) cout<<setw(3)<<maxc[i]; }