当前位置:网站首页>[daily question] Porter (DFS / DP)
[daily question] Porter (DFS / DP)
2022-07-06 09:09:00 【Easenyang】
Title Description
The other day , New students from senior one are coming , He peddles his books as usual , After a lot of talking , The students decided to buy his book , But there are three piles of books on Mr. Chen's desk , Each pile has a thick stack , He should find a way to take down the book in the easiest way and give it to his classmates . But you want to tease teacher Chen , So you design a most tiring way for him . If I tell you that these three piles have i,j,k This book , And the quality of each pile of books from bottom to top , You can only take books from the top of any pile every time , Then please design a plan , Let him try his best to take down all the books .
obviously , Teacher Chen's physical exertion will increase every time he takes the book , Here, the coefficient of physical strength is used to represent , When you take down the first book , Physical strength coefficient is 1, The physical strength coefficient of the second book is 2, By analogy , And the value of each physical exertion is the product of the physical coefficient and the weight of the book .Input format
The first line has three integers , They are the number of three stacks of books i,j,k.
The second row to the fourth row are the weight of each pile of books from bottom to top .
Output format
Output the total physical exertion of the most tiring way .
sample input
3 2 4
2 3 2
1 5
9 8 7 4
sample output
257
Topic link : hamal
Ideas 1:(DFS)
You can search every kind of book retrieval , Record physical exertion in various situations , Taking the maximum
Code :
import java.util.Scanner;
public class Main {
static int i, j, k;
static int[] num1,num2,num3;// An array of three stacks of books
static int res = 0; // final result
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
i = sc.nextInt(); j = sc.nextInt() ; k = sc.nextInt();
num1 = new int[i+1]; num2 = new int[j+1]; num3 = new int[k+1];
for (int a = 1; a <= i; a++) num1[a] = sc.nextInt();
for (int a = 1; a <= j; a++) num2[a] = sc.nextInt();
for (int a = 1; a <= k; a++) num3[a] = sc.nextInt();
dfs(0, 1);
System.out.println(res);
}
/** * @param temp Record the physical exertion of taking books in some way * @param t Current physical strength coefficient */
public static void dfs(int temp, int t) {
if (i + j + k ==0) {
// All for 0 Tense means that you have finished taking , Update results
res = Math.max(res, temp);
return;
}
if (i > 0) {
// There is surplus in this heap , Can continue to get this stack
temp += t * num1[i--]; // Take the situation
dfs(temp, t+1);
temp -= t * num1[++i]; // If you don't take it, go back
}
if (j > 0) {
temp += t * num2[j--];
dfs(temp, t+1);
temp -= t * num2[++j];
}
if (k > 0) {
temp += t * num3[k--];
dfs(temp, t+1);
temp -= t * num3[++k];
}
}
}
Ideas 2:(DP)
use dp[a][b][c] It means that the number of three stacks of books is a,b,c when , The greatest consumption of physical strength , It's for dp[a-1][b][c] + num1[a] * t ,dp[a][b-1][c] + num2[b] * t and dp[a][b][c-1] + num3[c] * t Of which t Is the current physical strength coefficient
Code :
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt(), j = sc.nextInt(), k = sc.nextInt();
int sum = i + j + k; // Total number of books
int[] num1 = new int[i+1], num2 = new int[j+1], num3 = new int[k+1];
for (int l = 1; l <= i; l++) num1[l] = sc.nextInt();// The weight of each book stored in each pile
for (int l = 1; l <= j; l++) num2[l] = sc.nextInt();
for (int l = 1; l <= k; l++) num3[l] = sc.nextInt();
int[][][] dp = new int[i+1][j+1][k+1];
for (int a = 0; a <= i; a++)
for (int b = 0; b <= j; b++)
for (int c = 0; c <= k; c++) {
// The current physical strength coefficient is the total number of books minus a,b,c The value of the add 1
int t = sum - a - b - c + 1;
if (a > 0)
dp[a][b][c] = dp[a-1][b][c] + num1[a] * t;
if (b > 0)
dp[a][b][c] = Math.max(dp[a][b-1][c] + num2[b] * t, dp[a][b][c]);
if (c > 0)
dp[a][b][c] = Math.max(dp[a][b][c-1] + num3[c] * t, dp[a][b][c]);
}
System.out.println(dp[i][j][k]);
}
}
边栏推荐
- Variable length parameter
- opencv+dlib实现给蒙娜丽莎“配”眼镜
- Redis之Bitmap
- LeetCode:剑指 Offer 48. 最长不含重复字符的子字符串
- [oc foundation framework] - < copy object copy >
- SAP ui5 date type sap ui. model. type. Analysis of the parsing format of date
- Ijcai2022 collection of papers (continuously updated)
- Selenium+Pytest自动化测试框架实战
- LeetCode:236. The nearest common ancestor of binary tree
- Multivariate cluster analysis
猜你喜欢
![[oc foundation framework] - < copy object copy >](/img/62/c04eb2736c2184d8826271781ac7e3.png)
[oc foundation framework] - < copy object copy >

Using C language to complete a simple calculator (function pointer array and callback function)

Once you change the test steps, write all the code. Why not try yaml to realize data-driven?

Selenium+pytest automated test framework practice (Part 2)
![[oc]- < getting started with UI> -- learning common controls](/img/2c/d317166e90e1efb142b11d4ed9acb7.png)
[oc]- < getting started with UI> -- learning common controls
![[MySQL] multi table query](/img/eb/9d54df9a5c6aef44e35c7a63b286a6.jpg)
[MySQL] multi table query

In depth analysis and encapsulation call of requests
![[OC-Foundation框架]---【集合数组】](/img/b5/5e49ab9d026c60816f90f0c47b2ad8.png)
[OC-Foundation框架]---【集合数组】

Advanced Computer Network Review(4)——Congestion Control of MPTCP

BMINF的後訓練量化實現
随机推荐
Revit secondary development Hof method calls transaction
Redis之五大基础数据结构深入、应用场景
Super efficient! The secret of swagger Yapi
Leetcode: Jianzhi offer 04 Search in two-dimensional array
Nacos 的安装与服务的注册
Export IEEE document format using latex
LeetCode:124. Maximum path sum in binary tree
How to intercept the string correctly (for example, intercepting the stock in operation by applying the error information)
BN折叠及其量化
Compétences en mémoire des graphiques UML
LeetCode:836. Rectangle overlap
如何正确截取字符串(例:应用报错信息截取入库操作)
Using label template to solve the problem of malicious input by users
Different data-driven code executes the same test scenario
[oc]- < getting started with UI> -- common controls uibutton
【每日一题】搬运工 (DFS / DP)
Advance Computer Network Review(1)——FatTree
Niuke winter vacation training 6 maze 2
Leetcode problem solving 2.1.1
多元聚类分析