1 条题解

  • 0
    @ 2023-6-11 12:20:57

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    int a[30001],n,c; 
    
    //拦截的当前导弹的编号,拦截的数量,当前的高度 
    void dp(int i,int num,int h){
    	if(i>n) return;
    	//比较出最大值 
    	c = max(c,num);
    	//向后递归 
    	for(int k=i+1;k<=n;k++){
    		//如果高度 >= 当前导弹高度,则递归 
    		if( h >= a[k]){
    			dp(k,num+1,a[k]);
    		}else{
    			dp(k,num,h);
    		}
    	}
    }
    
    int main(){
       int i;
       cin>>n;
       for(i=1;i<=n;i++){
       		cin>>a[i];
       }
       //每个导弹都可能成为第一枚 
        for(i=1;i<=n;i++){
        	dp(i,1,a[i]);
    	}
       cout<<c;
        return 0;
    }
    
    
    
    • 1

    信息

    ID
    2646
    时间
    1000ms
    内存
    16MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者