Code:
#include <stdio.h>
int mxstart(int [],int,int,int);
int mxcnt(int [],int,int,int,int,int);
int main()
{
int c = 1;
int a[] = {9,1,3,0,7,10,11};
c = mxstart(a,0,sizeof a / sizeof a[0],c);
printf("max count is %d\n", c);
return 0;
}
int mxstart(int a[],int i,int l,int c)
{
int p=1;
if (i != l) {
c = mxcnt(a,i,i+1,l,c,p);
c = mxstart(a,i+1,l,c);
}
return c;
}
int mxcnt(int a[],int i,int si,int l,int c,int p)
{
if (si == l)
return (a[si] >= a[i] ? p+1 : p);
else {
if (a[si] >= a[i])
c = mxcnt(a,si,si+1,l,c,p+1);
else
c = mxcnt(a,i,si+1,l,c,p);
return c;
}
}