满意答案
心底里5
2013.05.17
采纳率:45% 等级:12
已帮助:6704人
给,已经在VC上编译运行确认:
#include
#include
#include
#include
#define N 50
int func(int*a,int n,long sta)
{
int k,func=0;
long high=999999;
char b;
if(sta>0)
for(k=0;k
{ b=sta%2;sta/=2;
if(!b)continue;
if(a[k]>=high)break;
func++;
high=a[k];
}
return func;
}
int main()
{
int num,h,i=0,hit=0,HIT=0,temp=0;
int high[N]={NULL},result[N]={NULL};
long st1,st2,sta,STA;
char ch,b;
while((ch=getchar())!='\n')
{
if(ch!=' ') temp=temp*10+(ch-'0');
else
{
high[i++]=temp;
temp=0;
}
}
high[i++]=temp;
num=i;
st1=0;
st2=(long)pow(2,num)-1;
for(sta=st1;sta<=st2;sta++)
{
hit=func(high,num,sta);
if(hit<=HIT)continue;
HIT = hit;
STA = sta;
}
for(hit=i=0;i
{
b=STA%2;
STA/=2;
if(b)
{
if(hit==0||high[i]
{
result[hit]=i;
h=high[i];hit++;
}
}
}
printf("%d\n",hit);
for(i=0;i
{
printf("%d ",high[result[i]]);
}
getch();
return 1;
}
02分享举报