#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) 回复
不错
回复评论