问题描述
  题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大。因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号。例如:
  N=,K=,5个数字分别为1、、、、,可以加成:
  **(++)=
  *(+)*(+)=
  (*+)*(+)=
  ……
输入格式
  输入文件共有二行,第一行为两个有空格隔开的整数,表示N和K,其中(<=N<=, <=K<=N-)。第二行为 N个用空格隔开的数字(每个数字在0到9之间)。
输出格式
  输出文件仅一行包含一个整数,表示要求的最大的结果
样例输入 样例输出 样例说明
  (++)**=

题目描述

代码如下:

 #include <stdio.h>
#include <string.h>
#define LEN 15
#define MAX(X,Y) (X)>(Y)?(X):(Y) int main(void)
{
int i,j,h;
int n,k;
long long dp[LEN+][LEN+]; //列代表乘号个数
memset(dp,,sizeof(dp)); scanf("%d%d",&n,&k);
for (i= ; i<=n ; i++)
{
scanf("%d",&dp[i][]);
dp[i][] += dp[i-][]; //乘号个数为0时
} for (i= ; i<=n ; i++) //遍历i个数
{
for (j= ; j<=k&&j<=i- ; j++)//乘号的个数
{
for (h= ; h<=i ; h ++) //乘号的位置(第i个数的前面)
dp[i][j] = MAX(dp[i][j],dp[h-][j-]*(dp[i][]-dp[h-][]));
}
} printf("%lld",dp[n][k]); return ;
}

C解法

参考:https://www.cnblogs.com/cao-lei/p/6690827.html

解题思路:

建立一个二维数组,其中列表示乘号的个数

将输入的数字存储第一列中(从1开始存储),每次存储时增加前一个数字(即前n个数的和)

然后计算最大式,即:当前值 = max(当前值 ,前n个数最大值*(当前和 - 前n个数和) )

将前n个数的最大值情况保存下来,供下次使用

最后输出dp[n][k]即为答案

[蓝桥杯]ALGO-116.算法训练_最大的算式的更多相关文章

  1. 蓝桥杯练习系统— 算法训练 Beaver's Calculator

    问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator 1.0".它非常特别,并且被计划使用在各种各样 ...

  2. 蓝桥杯练习系统算法训练习题加答案java版本

    附上百度文库的链接:http://wenku.baidu.com/view/afb78d36b42acfc789eb172ded630b1c59ee9bf7

  3. 蓝桥杯 算法训练 ALGO-116 最大的算式

    算法训练 最大的算式   时间限制:1.0s   内存限制:256.0MB 问题描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量 ...

  4. ALGO-143_蓝桥杯_算法训练_字符串变换

    问题描述 相信经过这个学期的编程训练,大家对于字符串的操作已经掌握的相当熟练了.今天,徐老师想测试一下大家对于字符串操作的掌握情况.徐老师自己定义了1,,,,5这5个参数分别指代不同的5种字符串操作, ...

  5. ALGO-6_蓝桥杯_算法训练_安慰奶牛

    记: 本题目考的是最小生成数,可使用Kruskal算法 第一次,20分 原因:使用动态数组,有概率报运行错误(大雾= =) 第二次,100分 原因:改用静态数组,一次过 示例代码: #include ...

  6. ALGO-5_蓝桥杯_算法训练_最短路

    记: 一开始没接触过关于最短距离的算法,便开始翻阅关于图的知识, 得知关于最短距离的算法有Dijkstra算法(堆优化暂未看懂),Bellman-Ford算法,Floyd算法,SPFA算法. 由于数据 ...

  7. [蓝桥杯]ALGO-20.算法训练_求先序排列

    问题描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=). 输入格式 两行,每行一个字符串,分别表示中序和后序排列 输出格式 一个字符串,表示所求 ...

  8. 蓝桥杯_算法训练_区间k大数查询

    问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正整数,表示给定的序列. 第三个包含一个正整数m,表示询问个数 ...

  9. [蓝桥杯]ALGO-16.算法训练_进制转换

    问题描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1*102+2*101+3*100这样 ...

随机推荐

  1. [LeetCode&Python] Problem 788. Rotated Digits

    X is a good number if after rotating each digit individually by 180 degrees, we get a valid number t ...

  2. 2017.4.28 KVM 内存虚拟化及其实现

    概述 KVM(Kernel Virtual Machine) , 作为开源的内核虚拟机,越来越受到 IBM,Redhat,HP,Intel 等各大公司的大力支持,基于 KVM 的开源虚拟化生态系统也日 ...

  3. How should I store JSON in redis?

    var redis = require("redis"); var client = redis.createClient(); js = { "like":& ...

  4. Python知识点整理,基础3 - 字典操作

  5. test20190409 线段

    题意 线段(segment) [题目描述] 给定n条线段,第i条线段的左端点为\(l_i\),右端点为\(r_i\).第i条线段覆盖了点x当且仅当\(l_i ≤x ≤ r_i\). 给定Q个询问,第i ...

  6. C++中的显式类型转换

    一.学习总结 1.C++中额外提供的类型转换有 (1) reinterpret_cast: 格式:reinterpret_cast<type-id> (expression)①type-i ...

  7. Big-endian/Little-endian, LSB/MSB

    Least significant byte (LSB) Most significant byte (MSB) Big-endian machines store the most-signific ...

  8. 通过阅读python subprocess源码尝试实现非阻塞读取stdout以及非阻塞wait

    http://blog.chinaunix.net/uid-23504396-id-4661783.html 执行subprocess的时候,执行不是问题最麻烦的是获取进程执行后的回显来确认是否正确执 ...

  9. JFrame添加组件

    jframe.add(button) 与 jframe.getContentPane().add(button) 结果是一样的, 都是将组件添加到jframe自带的容器ContentPane中.

  10. 利用Jmeter批量数据库插入数据

    1.   启动Jmeter 2.   添加 DBC Connection Configuration 右键线程组->添加->配置元件->JDBC Connection Configu ...