欢迎来到一句话经典语录网
我要投稿 投诉建议
当前位置:一句话经典语录 > 心得体会 > 导弹拦截问题c语言心得体会

导弹拦截问题c语言心得体会

时间:2017-02-15 06:10

C语言 拦截导弹

完全了解你的情况,都是被计概习题逼的啊。

这里有一个同学编的程序,虽然很小,但非常巧妙,绝对可以pass,试试看吧。

但提醒一下:pass以后,请仔细读一读这个程序,知道它为什么可以通过好吗

#include void main() { int b[26],k,h[26],t=0,i,j; scanf(%d,&k); for(i=1;i<=k;i++) {scanf(%d,&h[i]);} for(i=1;i<=k;i++) {for(j=1,t=0;j=h[i]) {if(b[j]>t) t=b[j];}} if(t==0) b[i]=1; else b[i]=t+1;} for(i=1,t=0;i<=k;i++) {if(b[i]>t) t=b[i];} printf(%d,t); }

用C语言实现拦截导弹问题或给出算法

给,已经在VC上编译运行确认:#include #include #include #include #define N 50int func(int*a,int n,long sta) { int k,func=0; long high=999999; char b; if(sta>0) for(k=0;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())!='\\\ ') { 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

导弹拦截 C语言

for (i=n-1;i>=1;i--) { for (j=n;j>=i+1;j--) { if (a[i]>a[j] && l[j]+1>l[i]) { l[i]=l[j]+1; }\\\/\\\/printf(%d %d\\\ ,i,j);} max=0,ss=1;\\\/\\\/for(i=1;i<=n;i++) printf(%d ,l[i]);printf(\\\ ); for (i=1;i #include \\\/*描述 Description 某国为了防御敌国的导弹袭击,研发出一种导弹拦截系统。

但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。

某天,雷达捕捉到敌国的导弹来袭。

由于该系统还在试验阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。

输入格式 Input Format 输入数据只有一行,该行包含若干个数据,之间用半角逗号隔开,表示导弹依次飞来的高度(导弹最多有 20 枚,其高度为不大于 30000 的正整数)。

输出格式 Output Format 输出数据只有一行,该行包含两个数据,之间用半角逗号隔开。

第一个数据表示这套系统最多能拦截的导弹数;第二个数据表示若要拦截所有导弹至少要再添加多少套这样的系统。

样例输入 Sample Input 389,207,155,300,299,170,158,65 样例输出 Sample Output 6,1 其它测试输入样例389,207,155,300,299,170,65,1585,3,1,4,3,2,1,01,2,3,4,5,6,2*\\\/\\\/*分析,问题是动态规划与Dilworth定理题目*\\\/int main() { char s[105]; int i, j, n, a[21], l[21], sign[21], max = 0, min = 0; scanf(%s, s); \\\/\\\/min 代表最长递增序列长度 max 代表最短递减序列长度 for (i = 0, j = 0, a[0] = l[0] = sign[0] = 0; i < strlen(s); i++) { if (s[i] == ',') { a[++j] = 0; sign[j] = 1; l[j] = 1; } else { a[j] = a[j] * 10 + (s[i] - '0'); } } n = j; for (i = n - 1; i >= 0; i--) { int maxflag = 0, minflag = 0; j = i + 1; while(j <= n) { if(a[i] > a[j]) { if(l[i] < l[j]) { l[i] = l[j]; } maxflag = 1; } else if(a[i] < a[j]) { if(sign[i] < sign[j]) { sign[i] = sign[j]; } minflag = 1; } j++; } if(maxflag) l[i]++; if(minflag) sign[i]++; if(max < l[i]) { max = l[i]; } if(min < sign[i]) { min = sign[i]; } } printf(%d,%d\\\ , max, min - 1); return (0); }

简单C程序题目 拦截导弹问题

这个问题其实就一个序列最长的非递增序列。

定义一个状态以a[i]为最后一个拦截的导弹序列的最长长度。

例如a[0]=300;a[1]=207;a[2]=155;a[3]=300;...我们从头向后看。

以a[0]为最后一个导弹序列的最长长度,和明显就是a[0]自己。

也就是1.以a[1]为最后一个导弹序列的最长长度,因为递减所以就是a[0],a[1],长度为2.以a[2]为最后一个导弹序列的最长长度,应该前面所有大于a[2]的序列加上1,然后从中取最大的,也就是a[0],a[1],a[2]下面是程序代码#include int main(){ int m,temp,i=0,j; int data[100]; int ans[100]; int maxt; scanf(%d,&m); temp=m; while(temp--) scanf(%d,&data[i++]); ans[0]=1; maxt=1; for(j=1;j=data[j]) { if(ans[i]+1>ans[j]) ans[j]=ans[i]+1; } } if(ans[j]>maxt) maxt=ans[j]; } printf(%d\\\ ,maxt);}上面的程序肯对的,我以前做过这道题,属于简单的动态规划,程序已经测试运行过。

导弹拦截问题 C程序 动态规划

我给你写了一个,不过得出的序列可能并不是唯一的,但保证是正确的

时间复杂度是O(n^2),你所说的n*logn的目前我是做不出来,等做出来再告诉你吧

#includeusing namespace std;int main(){int i,j,n,x[100],d[100]; \\\/\\\/x[]表示各个导弹高度,d[i]记录为第 i 枚导弹被拦截之后,\\\/\\\/这套系统最多还能拦截的导弹数(包含被拦截的第 i 枚)。

int dmax=0,xh=0; \\\/\\\/记录拦截的最大个数以及第一个被拦截的序号cin>>n; \\\/\\\/输入拦截的导弹数for(i=0;i>x[i]; \\\/\\\/输入每个导弹的高度 d[i]=1; \\\/\\\/初始值都设为1}for(i=n-2;i>=0;i--) \\\/\\\/,递归实现,从后面向前循环{ for(j=i+1;jdmax) { dmax=d[i]; xh=i; \\\/\\\/第一枚被拦截的导弹序号 }}cout<

动态规划导弹拦截问题,输入怎么弄,要c++或者c的

难以拦截的弹道导弹主要是针对中远程和等战略弹道导弹而言,主要有以下原因:1、战略弹道导弹是所有国家的,发射装置很隐蔽,并且可以机动发射,因此很难预警,若想在其发射段将其摧毁更是难上加难,需要大量的情报工作作为基础。

2、现有防空导弹射高最多2~30公里,战略弹道导弹巡航阶段的弹道很高,没有几种拦截武器能够达到该射程,即便能够达到,则武器成本也会极高,体积也会很大,除非在太空上布置拦截。

3、弹道导弹进入大气层后,速度可以达到5~9马赫,而且还可以使用机动规避,或者分导多弹头,有的导弹(如白杨M机动型)还可变为,改用低弹道飞行,极其难以发现,因此命中难度极高。

4、弹道导弹的末段动能巨大,即便被命中也几乎不能使其偏离航向。

5、弹道导弹的弹头一般都可以在目标上空爆炸,这比在落地爆炸的杀伤效果更好,即在低空拦截后仍然无法消除其杀伤力。

声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。联系xxxxxxxx.com

Copyright©2020 一句话经典语录 www.yiyyy.com 版权所有

友情链接

心理测试 图片大全 壁纸图片