当前位置:网站首页>2022-06-23: given a nonnegative array, select any number to make the maximum cumulative sum a multiple of 7, and return the maximum cumulative sum. N is larger, to the 5th power of 10. From meituan. 3
2022-06-23: given a nonnegative array, select any number to make the maximum cumulative sum a multiple of 7, and return the maximum cumulative sum. N is larger, to the 5th power of 10. From meituan. 3
2022-06-24 10:05:00 【Fuda scaffold constructor's daily question】
2022-06-23: Given a nonnegative array , Select any number , Make the sum of accumulation maximum and equal to 7 Multiple , Returns the maximum cumulative sum .
n The larger ,10 Of 5 Power .
From meituan .3.26 written examination .
answer 2022-06-23:
want i Or not i, recursive . It can be changed into dynamic programming .
The code to use rust To write . The code is as follows :
use rand::Rng;
fn main() {
let len: i32 = 12;
let value: i32 = 100;
let test_time: i32 = 10000;
println!(" Beginning of the test ");
for i in 0..test_time {
let n = rand::thread_rng().gen_range(0, len) + 1;
let mut arr = random_array(n, value);
let ans1 = max_sum1(&mut arr);
let ans2 = max_sum2(&mut arr);
if ans1 != ans2 {
println!(" Something went wrong !{}", i);
println!("ans1 = {}", ans1);
println!("ans2 = {}", ans2);
break;
}
}
println!(" End of test ");
}
fn max_sum1(arr: &mut Vec<i32>) -> i32 {
return process1(arr, 0, 0);
}
fn process1(arr: &mut Vec<i32>, index: i32, pre: i32) -> i32 {
if index == arr.len() as i32 {
return if pre % 7 == 0 { pre } else { 0 };
}
let p1 = process1(arr, index + 1, pre);
let p2 = process1(arr, index + 1, pre + arr[index as usize]);
return get_max(p1, p2);
}
fn get_max<T: Clone + Copy + std::cmp::PartialOrd>(a: T, b: T) -> T {
if a > b {
a
} else {
b
}
}
fn max_sum2(arr: &mut Vec<i32>) -> i32 {
if arr.len() == 0 {
return 0;
}
let n = arr.len() as i32;
let mut dp: Vec<Vec<i32>> = vec![];
for i in 0..n {
dp.push(vec![]);
dp[i as usize].push(0);
for _ in 1..7 {
dp[i as usize].push(-1);
}
}
dp[0][(arr[0] % 7) as usize] = arr[0];
for i in 1..n {
// At present arr[i] % 7 The remainder of
let cur_mod = arr[i as usize] % 7;
for j in 0..7 {
dp[i as usize][j as usize] = dp[(i - 1) as usize][j as usize];
let find_mod = (7 - cur_mod + j) % 7;
if dp[(i - 1) as usize][find_mod as usize] != -1 {
dp[i as usize][j as usize] = get_max(
dp[i as usize][j as usize],
dp[(i - 1) as usize][find_mod as usize] + arr[i as usize],
);
}
}
}
return if dp[(n - 1) as usize][0] == -1 {
0
} else {
dp[(n - 1) as usize][0]
};
}
// In order to test
fn random_array(n: i32, v: i32) -> Vec<i32> {
let mut arr: Vec<i32> = vec![];
for _i in 0..n {
arr.push(rand::thread_rng().gen_range(0, v) + 1);
}
return arr;
}The results are as follows :
边栏推荐
猜你喜欢

Queue queue

415-二叉树(144. 二叉树的前序遍历、145. 二叉树的后序遍历、94. 二叉树的中序遍历)

JCIM|药物发现中基于AI的蛋白质结构预测:影响和挑战

五心红娘

How to make social media the driving force of cross-border e-commerce? This independent station tool cannot be missed!

Prct-1400: failed to execute getcrshome resolution

Floating point notation (summarized from cs61c and CMU CSAPP)

Wechat applet learning to achieve list rendering and conditional rendering

How to standardize data center infrastructure management process

如何规范化数据中心基础设施管理流程
随机推荐
Floating point notation (summarized from cs61c and CMU CSAPP)
Dragging El table sortablejs
[Eureka registry]
请问有国内靠谱低手续费的期货开户渠道吗?网上开户安全吗?
Programming questions (continuously updated)
How to improve the efficiency of network infrastructure troubleshooting and bid farewell to data blackouts?
PTA monkey chooses King (Joseph Ring problem)
Geogebra instance clock
Use of vim
编程题(持续更新)
Queue queue
Basic operations on binary tree
YOLOv6:又快又准的目标检测框架开源啦
PostgreSQL DBA quick start - source compilation and installation
Detailed explanation of PHP singleton mode
Literature Research Report
Desktop software development framework reward
LeetCode: 137. Number II that appears only once
LeetCode: 240. Search 2D matrix II
使用Live Chat促进业务销售的惊人技巧