divide_3
xiao方法
#include<stdio.h>
#include<vector>
#include<iostream> using namespace std; int main()
{
int data[] = {,,};
int flag1 = 0xffffff, flag2 = 0xffffff;
int sum = ;
int res = ;
for(int i = ; i < ; i++)
{
sum += data[i];
if(data[i]%== && data[i]<flag1)
{
flag1 = data[i];
}
else if(data[i]%== && data[i]<flag2)
{
flag2 = data[i];
}
if(sum%== && sum>res)
{
res = sum;
}
else if(sum%== && flag1<0xffffff)
{
res = sum-flag1>res?sum-flag1:res;
}
else if(sum%== && flag2<0xffffff)
{
res = sum-flag2>res?sum-flag2:res;
}
}
cout<<res<<endl;
return ;
} int divide_3(vector<int> input,int length){
vector<int> dp(length);
for(int i = ;i < length;i++){ } }
正负都能解决
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <vector> using namespace std;
int main()
{
int input[] = {-,,,};
vector<int> data(input,input+);
int n = data.size();
vector<vector<int> > dp(n+,vector<int>(,-));
dp[][] = ; for(int i = ;i <= n;i++){
for(int j = ;j < ;j++){
dp[i][j] = max(dp[i][j],dp[i-][j]);
if(dp[i-][j] < )
continue;
int temp = (data[i-] + j) % ;
dp[i][temp] = max(dp[i-][temp], dp[i-][j] + data[i-]);
}
}
cout << dp[n][] << endl;
return ;
}
第一题用DFS是肯定可以做的,但我当时想的是先排个序,然后greedy地取集合里的所有数,看看除3余几
1) 如果余0直接return
2) 如果余1,考虑是丢掉一个最小的除3余1的数,还是丢掉两个最小的除3余2的数.留学论坛-一亩-三分地
3) 如果余2也是类似的
后来跟面试官讨论发现其实不用排序。。打个擂台就能找了(但其实我是想着排序了代码好写一点orz)
优化后时间复杂度是O(n),本来还担心这个方法会不会有点野鸡,但是讲道理效率确实比DFS好得多。。。
follow up: 加入负数的话也是类似的,一开始greedy地取所有正数,然后再考虑是丢掉最小的正数还是加入最大的负数,复杂度一样
divide_3的更多相关文章
- 【java提高】(19)---BigDecimal详解和精度问题
BigDecimal详解和精度问题 一.背景 在实际开发中,对于 不需要任何准确计算精度的属性可以直接使用float或double,但是如果需要精确计算结果,则必须使用BigDecimal,例如价格. ...
随机推荐
- 服务注册中心Eureka vs Zookeeper vs Consul
前言 在现在云计算和大数据快速发展的今天,业务快速发展和变化.我们以前的单一应用难以应对这种快速的变化, 因此我们需要将以前单一的大应用不断进行差分,分成若干微小的应用或者服务,这就是微服务的思想.但 ...
- php解释命令行的参数
php cli模式下,可以用$argc, $argv来读取所有的参数以及个数,如: ghostwu@ghostwu:~/php/php1/1$ cat go1 #!/usr/bin/php <? ...
- 设计模式(10)--Facade(外观模式)--结构型
作者QQ:1095737364 QQ群:123300273 欢迎加入! 1.模式定义: 外观模式提供了一个统一的接口,用来访问子系统中的一群接口.外观定义了一个高层接口,让子系统更容易使 ...
- 【代码笔记】iOS-去掉NSString中的空格
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, ...
- C#加解密算法
先附上源码 加密解密算法目前已经应用到我们生活中的各个方面 加密用于达到以下目的: 保密性:帮助保护用户的标识或数据不被读取. 数据完整性:帮助保护数据不被更改. 身份验证:确保数据发自特定的一方. ...
- sql server 大批数据插入时,时间过长的问题
private const string con = "server=192.168.30.36;database=test;user=sa;pwd=123456"; static ...
- servlet3.0 web.xml 标头
<?xml version="1.1" encoding="UTF-8"?> <web-app xmlns="http://java ...
- JDK7下VisualVm插件无法链接到插件中心
VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃 ...
- [Visual Studio] [Config] [Transformation] [SlowCheetah] 在非Web工程中使用Transformation
1. 为VS安装SlowCheetah插件 https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.Sl ...
- Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件
新服务器搭建环境总是有很多问题.在安装MS SQL SERVER 2014 EXPRESS的时候提示无法安装成功,需要先安装 .NET Framework 3.5!但是新问题又来了,使用Windows ...