当前位置:网站首页>[oiclass] maximum formula
[oiclass] maximum formula
2022-07-06 14:48:00 【Liujincheng LJC】
problem : The biggest formula
Title Description
The subject is very simple , give N A digital , Don't change their relative position , Add... In the middle K A multiplication sign and N-K-1 Plus sign ,( Put in parentheses ) Maximize the final result . Because the multiply sign and the plus sign are N-1 A the , So there's just a sign between every two adjacent numbers . for example :
N=5, K=2,5 The numbers are 1、2、3、4、5, Can add :
1*2*(3+4+5)=24
1*(2+3)*(4+5)=45
(1*2+3)*(4+5)=45
...
Input
The input file has two lines , The first line is two integers separated by spaces , Express N and K, among (2<=N<=15, 0<=K<=N-1). Second behavior N A number separated by a space ( Each number is in 0 To 9 Between ).
Output
The output file contains only one integer on one line , Represents the maximum result required
The final result <=maxlongint
Examples
#1
Input
5 2
1 2 3 4 5
Output
120
Previous ideas
Think f[i][j][k] It should be defined like this :
set up f[i][j][k] For in [i , j] Within the interval of k A multiple sign
State transition equation :
f[i][j][k] = max4(f[i+1][j][k]+a[i],f[i][j-1][k]+a[j],
f[i+1][j][k-1]*a[i],f[i][j-1][k-1]*a[j]);
Then the wrong code should be like this :
#include<bits/stdc++.h>
using namespace std;
const int N = 101;
int n,m,a[N],f[N][N][N*11];
int main(){
cin >> n >> m;
for(int i=1;i<=n;i++) cin >> a[i];
for(int i=n;i>0;i--){
for(int j=i;j<=n;j++){
for(int k=0;k<=m;k++){
f[i][j][k] = max(f[i+1][j][k]+a[i],
max(f[i+1][j][k-1]*a[i],
max(f[i][j-1][k]+a[j],
f[i][j-1][k-1]*a[j])));
}
}
}
cout << f[1][n][m] << endl;
}
/************************************************************** Language: C++ Result: Wrong answer 50 ****************************************************************/
got 50 branch , Later, I found several error examples and found them by comparison :
This section can be cut from more than two sides , It can also be cut from any position in the middle , If you cycle the middle line , Then the number of multiplication signs can be more or less . At this time f[i][j][k] The initialization of will become -INF This is running max Function to find the optimal solution
On AC Code :
#include<bits/stdc++.h>
#define INF 2147483647
using namespace std;
const int N = 110;
int n,m,a[N],f[N][N][N];
int main(){
cin >> n >> m;
for(int i=1;i<=n;i++){
cin >> a[i];}
for(int i=1;i<=n;i++){
f[i][i][0] = a[i];
}
for(int i=n;i>0;i--){
for(int j=i+1;j<=n;j++){
for(int k=0;k<=min(j-i,m);k++){
if(m-(n-(j-i))>=k){
f[i][j][k]=-INF;
continue;
}
for(int z=i;z<j;z++){
for(int y=0;y<=k;y++){
f[i][j][k] = max(f[i][j][k],f[i][z][y]+f[z+1][j][k-y]);
if(y==0){
f[i][j][k] = max(f[i][z][y]*f[z+1][j][k-y-1],
f[i][j][k]);
}
else{
f[i][j][k] = max(f[i][z][y-1]*f[z+1][j][k-y],
f[i][j][k]);
}
}
}
}
}
}
// cout << f[3][5][1] <<endl;
cout << f[1][n][m] << endl;
}
/************************************************************** Language: C++ Result: correct 100 Time:0 ms Memory:6912 kb ****************************************************************/
边栏推荐
- 《统计学》第八版贾俊平第十二章多元线性回归知识点总结及课后习题答案
- What is an index in MySQL? What kinds of indexes are commonly used? Under what circumstances will the index fail?
- 数据库多表链接的查询方式
- 【指针】数组逆序重新存放后并输出
- Want to learn how to get started and learn software testing? I'll give you a good chat today
- Matplotlib绘图快速入门
- JVM memory model concept
- Keil5 MDK's formatting code tool and adding shortcuts
- Fire! One day transferred to go engineer, not fire handstand sing Conquest (in serial)
- Statistics 8th Edition Jia Junping Chapter 14 summary of index knowledge points and answers to exercises after class
猜你喜欢
《统计学》第八版贾俊平第四章总结及课后习题答案
《统计学》第八版贾俊平第五章概率与概率分布
《统计学》第八版贾俊平第十一章一元线性回归知识点总结及课后习题答案
Statistics 8th Edition Jia Junping Chapter 10 summary of knowledge points of analysis of variance and answers to exercises after class
“Hello IC World”
内网渗透之内网信息收集(三)
Software testing interview summary - common interview questions
《统计学》第八版贾俊平第十章方差分析知识点总结及课后习题答案
数字电路基础(四) 数据分配器、数据选择器和数值比较器
Binary search tree concept
随机推荐
Solutions to common problems in database development such as MySQL
【指针】统计一字符串在另一个字符串中出现的次数
What is the transaction of MySQL? What is dirty reading and what is unreal reading? Not repeatable?
【指针】数组逆序重新存放后并输出
数字电路基础(三)编码器和译码器
Fundamentals of digital circuits (I) number system and code system
ByteDance ten years of experience, old bird, took more than half a year to sort out the software test interview questions
Statistics 8th Edition Jia Junping Chapter 1 after class exercises and answers summary
浙大版《C语言程序设计实验与习题指导(第3版)》题目集
《统计学》第八版贾俊平第八章假设检验知识点总结及课后习题答案
Flash implements forced login
Statistics 8th Edition Jia Junping Chapter 2 after class exercises and answer summary
Matplotlib绘图快速入门
Numpy Quick Start Guide
The four connection methods of JDBC are directly coded
函数:求两个正数的最大公约数和最小公倍
内网渗透之内网信息收集(三)
Statistics 8th Edition Jia Junping Chapter 14 summary of index knowledge points and answers to exercises after class
Mysql的事务是什么?什么是脏读,什么是幻读?不可重复读?
【指针】使用插入排序法将n个数从小到大进行排列