永发信息网

C++ 导弹拦截第二问做不出来

答案:1  悬赏:20  手机版
解决时间 2021-05-04 20:24

这是我的程序#include"stdio.h"
int n,a[1001]={0},f[1001]={0},c[1001]={0},m;
int nounder(int k)
{int i,max=0,m=0;
if (k==0 || f[k])
   return f[k];
else
    {for (i=k-1;i>=0;i--)
       if (a[k]<a[i])
         max=max<nounder(i)?f[i]:max;  
       else
         {m++;
          c[m]=i;}   
     f[k]=max+1;
     return f[k];
     }
}
main()
{int i,j;
FILE *fin;
fin=fopen("ddlj.in","r");
fscanf(fin,"%d",&n);
for (i=1;i<=n;i++)
    fscanf(fin,"%d",&a[i]);
printf("%d\n",nounder(n));
for (i=1;i<=n;i++)
  if (i==c[i])printf("%d ",i);       
fclose(fin);
getchar();getchar();
}

最佳答案
很老的题目了..我用的是动态规划。。文件输出
Input
最多20个整数,分别表示导弹依次飞来的高度(雷达给出高度数据是不大于30000的正整数)
Output
两个整数M和N。表示:这套系统最多能拦截 M 枚导弹,如果要拦截所有导弹最少要配备 N 套这种导弹系统。
Sample Input
300 250 275 252 200 138 245
Sample Output
5 2
#include <iostream>
using namespace std;
const short MAX = 20;
bool prove(short arr[]);
void solution(short arr[],short *a,short *b);//a为拦截数,b为需要设备数
int main(void)
{
    short arr[MAX] = {0} , i = 0,a = 0,b = 0;
    cout << "输入导弹高度:(输入0结束) " << endl;
    do
    {
    cin >> arr[i];
    i++;
    }while(arr[i-1] != 0 && i<MAX);
    solution(arr,&a,&b);
    cout << "一套设备能够拦截的导弹数是: " << a << endl;
    cout << "拦截全部导弹需要的设备数是: " << b << endl;
    return 0;
}
bool prove(short arr[])
{
    for(int i = 0;i<MAX;i++)
    {
    if ( arr[i] != 0)
    {
    return true;
    }
    }
    return false;
}
void solution(short arr[],short *a,short *b)
{
    do
    {
    int min = 0;
    for(int i=0;i<MAX;i++)
    {
    if(arr[i] != 0)
    {
    min = arr[i];
    arr[i] = 0;
    break;
    }
    }
    for(int i=0;i<MAX;i++)
    {
    if(arr[i] < min && arr[i] != 0 )
    {
    min = arr[i];
    arr[i] = 0;
    (*a)++;
    }
    }
    (*b)++;
    }while(prove(arr));
    return ;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
诺基亚N72手机彩信接收问题!
小岔河村在哪里啊,我有事要去这个地方
无限路由器怎么设置?
“自古多情空余恨 此恨绵绵无绝期”这句诗有
谁会在周六去快乐大本营
玲玲同学有一些烦恼,她给校园网“心灵网站”
知道长安之星2代新乡多少钱么?不带空调的1.0
和校花同居的大盗全集是72万字么? 一共多少
佳能ixus12015 接入USB后没有文件夹出现。。
茄子快传公司怎么样,茄子快传怎么传送文件 茄
初三数学题,急要过程
恒源祥男装专卖在什么地方啊,我要过去处理事
人怎么样才不烦恼???
谁能送我个(刨兵)以上的QQ堂号啊?
当你和他(她)在一起漫步的时候,他(她)突
推荐资讯
学习英语的电子词典
黑色小西装上有白毛怎么办?
咋炫舞老掉线呐、
请帮忙算五行取名,谢谢
现在有什么新电视好看的啊?
谁能给我个dnfpkf登录权限,十分感谢
怎么碰不到合适的人嫁了?结婚后到底好不好呀
电脑换了不同的主板有影响吗
我的电脑一键还原了以后耳机和话筒都失灵了。
如何看待品质?
歌曲《送给一些无聊的人》次歌曲的链接
QQ农场怎么玩??
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?