| 发表于:2007-07-21 10:37:484楼 得分:0 |
呵呵,我是菜鸟,没楼上3位大侠那样的见解,写了个很笨的程序.如下: //由用户输入n个数代表n个导弹的高度,输入数的次序代表敌人发射导弹的次序,要求你求出我们的防导弹系统最多能挡住敌人几个导弹. //防导弹系统的规则如下: //第i次防导弹系统所能达到的高度不能小于第j次(i <j),即第一次所达高度最高,往后依次次之. //比如输入:9 8 7 6 5 4 则可以全部拦住 输出6 //7 8 9 6 3 2 最多能拦住4个7 6 3 2或者8 6 3 2或则9 6 3 2 输出4 //5 4 12 10 9 8 13 7 6 相应拦截的高度依次为12 10 9 8 7 6 输出6 #include <iostream> using namespace std; void main() { float *p;int m,h; cout < < "请输入敌人发射导弹的数目 " < <endl; cin> > m; p=new float [m]; for(int i=0;i <m;i++) { cout < < "请输入敌人第 " < <i+1 < < "枚导弹的高度 " < <endl; cin> > p[i]; } cout < < "敌人导弹的高度分别是: " < <endl; for(i=0;i <m;i++) { cout < <p[i] < < " "; } for(int j=0;j <m;j++) { h=0; for(int i=j;i <m;i++) { if(p[j]> p[i]) { h++; } } p[j]=h; } for(i=1;i <m;i++) { if(p[i-1]> p[i]) { p[i]=p[i-1]; } } cout < < "可以拦截导弹的数量是: " < <p[m-1]+1 < <endl; cin> > m;//这一行是没有任何作用的,只是让程序在运行的时候停住,让自己看到结果 } | | |
|