c语言运行给拦截了怎么办,用C语言实现拦截导弹问题或给出算法

满意答案

00e27ab806e4881f8254fe7ae8741834.png

心底里5

2013.05.17

00e27ab806e4881f8254fe7ae8741834.png

采纳率: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分享举报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值