蓝桥杯--天天向上

试题 算法提高 天天向上

资源限制
时间限制:1.0s   内存限制:256.0MB
问题描述
  A同学的学习成绩十分不稳定,于是老师对他说:“只要你连续4天成绩有进步,那我就奖励给你一朵小红花。”可是这对于A同学太困难了。于是,老师对他放宽了要求:“只要你有4天成绩是递增的,我就奖励你一朵小红花。”即只要对于第i、j、k、l四天,满足i<j<k<l并且对于成绩wi<wj<wk<wl,那么就可以得到一朵小红花的奖励。现让你求出,A同学可以得到多少朵小红花。
输入格式
  第一行一个整数n,表示总共有n天。第二行n个数,表示每天的成绩wi。
输出格式
  一个数,表示总共可以得到多少朵小红花。
样例输入
6
1 3 2 3 4 5
样例输出
6
数据规模和约定
  对于40%的数据,n<=50;
  对于100%的数据,n<=2000,0<=wi<=109。
import java.util.Scanner;


public class Main
{

    static int n;
    static int art[] = new int[2000];
    static int count = 0;
    static int brt[] = new int[4];
    
    public static void print()
    {
        for(int i:brt)
        {
            System.out.print(i);
        }
        System.out.println();
    }
    
    public static void fun(int t,int k,int temp)//当前第几个,已经选了K个,目前temp
    {
        //System.out.println(t);
        if(t== n+1)
        {
            return;
        }
        if(k == 4)
        {
            //print();
            count++;
            return;
        }
        if(art[t]>temp)//比前面大
        {
            brt[k] =art[t];
            fun(t+1, k+1, art[t]);//
            fun(t+1, k, temp);//不选
        }
        else {
            fun(t+1, k, temp);
        }
        
    }
    
    public static void main(String[] args)
    {
        // TODO Auto-generated method stub
        Scanner scanner = new Scanner(System.in);
        n = scanner.nextInt();
        for(int i=0;i<n;i++)
        {
            art[i] = scanner.nextInt();
        }
        fun(0, 0, 0);
        System.out.println(count);

    }

}

 

posted @ 2020-10-14 16:47  池塘之底  阅读(163)  评论(0编辑  收藏  举报