[c]代码库
#include <stdio.h>
#include <stdlib.h>
#define MAXNUM 100//最大数字个数
#define INF 100000000
int n;//数字个数
int Num[MAXNUM];//未排序数字
int Last[MAXNUM];
void update(int x,int y,int L[],int N[],int i);
//递归函数
int main()
{
int i,j;
int lis;
printf("输入数字的个数n(1-100):\n");
scanf("%d",&n);
printf("输入数字:\n");
for(i=1;i<=n;i++)
{
scanf("%d",&Num[i]);
}
lis = 0;
Last[lis]=-INF;
for(i=1;i<=n;i++)
{
if(Num[i]>Last[lis])
{
lis++;
Last[lis]=Num[i];
}
else
update(0,lis,Last,Num,i);
}
printf("最少移动次数:%d\n",n-lis);
return 0;
}
void update(int x,int y,int L[],int N[],int i)
{
if(x==y)
{
L[x]=N[i];
}
else
{
if(L[(x+y)/2]>N[i])
{
update(x,(x+y)/2,L,N,i);
}
else
{
update((x+y)/2+1,y,L,N,i);
}
}
}
初级程序员
by: 云代码会员 发表于:2015-06-19 15:23:11 顶(0) | 踩(0) 回复
不错
回复评论