亲亲袋鼠国际早教中心:找上升数对

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 02:40:04
找上升数对(用vb,c语言编写)随即产生100组数对(ai,bi), ai<=aj&&bi<=bj,输出最长的连续上升数对,谢谢各位大虾!

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAXNUM 100

int findAscendPair(int x[],int y[], int *num,int start[])
{
int maxNum;
int startIndex;
int i,k;
int cx,cy;
startIndex = 0;
maxNum = 0;
k=0;
cx = x[startIndex];
cy = y[startIndex];
for(i=1;i<*num;i++)
{
if((x[i]<cx) || (y[i]<cy))
{
if((i-startIndex)>maxNum)
{
k=0;
start[k++] = startIndex;
maxNum = i-startIndex;
}
else if((i-startIndex)==maxNum)
{
start[k++] = startIndex;
}
startIndex = i;
}
cx = x[i];
cy = y[i];
}
*num = maxNum;
return k;
}

int main()
{
int x[MAXNUM],y[MAXNUM];
int start[MAXNUM];
int i,j;
int num;
int count;
num = MAXNUM;
srand( (unsigned)time(NULL) );
for(i=0;i<MAXNUM;i++)
{
x[i] = 1.0*rand()/RAND_MAX * 1000;
y[i] = 1.0*rand()/RAND_MAX * 1000;
printf("[%d,%d],",x[i],y[i]);
if(i%5==4) printf("\n");
}

count = findAscendPair(x,y, &num,start);
printf("\nThe max ascend count = %d, length = %d\n",count,num);
for(i=0;i<count;i++)
{
for(j=start[i];j<start[i]+num;j++)
{
printf("[%d,%d],",x[j],y[j]);
}
printf("\n");
}

return 0;
}