蓝桥杯刷题打卡

简介: 蓝桥杯刷题打卡

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;
}














相关文章
牛客网刷题-(5)
牛客网刷题-(5)
50 0
牛客网刷题-(4)
牛客网刷题-(4)
45 0
|
Python
牛客网刷题-(1)
牛客网刷题-(1)
64 0
牛客网刷题-(8)
牛客网刷题-(8)
55 0
牛客网刷题-(11)
牛客网刷题-(11)
49 0
牛客网刷题-(2)
牛客网刷题-(2)
56 0
蓝桥杯刷题-1
蓝桥杯刷题-1
113 1
|
机器学习/深度学习 人工智能 搜索推荐
|
机器学习/深度学习
蓝桥杯刷题(一)
蓝桥杯刷题
115 0