蓝桥杯刷题打卡

简介: 蓝桥杯刷题打卡

d8a9e6a6605a80e52734c9cbbe8b9043.pngf5fd7bbe16fd33e513fb478ef8ba246c.png


8f0d97926a5814dbdc508a512d7fef7b.png



79a5273a9b490d28388e1fa0da244979.png


前三题纯暴力,第四题求最小质因数加dp,最小质因数用暴力直接求出来了,dp花了点时间。

#include <iostream>
using namespace std;
int find(int x){//求质因数,纯暴力。
  for(int i = 2;i <= x/2; i++){
    if(x%i==0){
      for(int j = 2;j <= i; j++){
        if(j==i){
          return j;
        }
        if(i%j==0){
          break;
        }
      }
    }
  }
  return x;
}
int price(int nums[10000],int D[10000],int n){//dp,最后dp[n-1]为最终值
  int dp[10000];
  dp[0] = nums[0];
  for(int i = 1;i < n; i++){
    dp[i] = dp[i-1] + nums[i];
    for(int j = i-1;j >= 0; j--){
      if(i-j<=D[j]){
        if(dp[j]+nums[i]>dp[i]){//更新,dp数组的建立就是存储每一步的最大价值。
          dp[i] = dp[j] + nums[i];
        }
      }
    }
  }
  return dp[n-1];//返回
}
int main()
{
  // 请在此输入您的代码
  int n;
  int nums[10000];
  int D[10000];//记录脚力
  cin>>n;
  for(int i = 0;i < n; i++){
    cin>>nums[i];
    D[i] = find(n-i-1);//脚力
  }
  int k = price(nums,D,n);//直接输出就行了,int k多余了。
  cout<<k;
  return 0;
}














相关文章
|
8天前
|
测试技术
蓝桥杯刷题|02入门真题
蓝桥杯刷题|02入门真题
|
8天前
|
测试技术
蓝桥杯刷题|03入门真题
蓝桥杯刷题|03入门真题
|
8天前
|
测试技术
蓝桥杯刷题|01入门真题
蓝桥杯刷题|01入门真题
|
9月前
|
存储 测试技术
蓝桥杯刷题篇①(上)
蓝桥杯刷题篇①(上)
72 0
|
9月前
|
人工智能 搜索推荐 测试技术
蓝桥杯刷题篇①(下)
蓝桥杯刷题篇①(下)
47 0
|
8天前
|
算法 Java C语言
蓝桥杯-03-蓝桥杯学习计划
蓝桥杯-03-蓝桥杯学习计划
|
10月前
蓝桥杯刷题-1
蓝桥杯刷题-1
68 1
|
11月前
|
安全
|
11月前
|
机器学习/深度学习
|
11月前
|
机器学习/深度学习 测试技术