`
kmplayer
  • 浏览: 509980 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

2.18 数组分割

阅读更多
1,题意:2n个正整数,分成两组n,使其和最接近.

2,思路:
动态规划: isOK[i][v]表示是否可以找打i个数,使得他们之和等于v.
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;

const int m = 0xffff;
bool isOK[100][m];

void HalfSum(int data[], int N)
{
    memset(isOK, 0, sizeof(isOK));
    isOK[0][0] = true;
    int sum = 0;
    int n = N/2;
    for (int i = 0; i < N; ++i)
        sum += data[i];
    for (int k = 1; k < N; ++k)
    {
        for (int i = 1; i <= min(k, n); ++i)
        {
            for (int v = 1; v <= (sum / 2); ++v)
                if ((v >= data[k]) && isOK[i - 1][v - data[k]])
                    isOK[i][v] = true;
        }
    }
    int ret = sum / 2;
    while (!isOK[n][ret])
        --ret;
    cout << ret << endl;
}

int main()
{
    int data[] = {1, 5, 7, 8, 9, 6, 3, 11, 20, 17};
    HalfSum(data, sizeof(data) / sizeof(data[0]));
    return 0;
}
分享到:
评论

相关推荐

    数组分割1

    该问题源于《编程之美》中的2.18章节,同时也是July的《微软等公司面试100题》中的32题,主要探讨如何通过交换两个序列的元素,使得两个序列元素之和的差最小。这个问题的关键在于找到一种有效的交换策略,使得两个...

    你必须知道的495个C语言问题

    2.18 既然数组名可以用作数组的基地址,为什么对结构不能这样? 2.19 程序运行正确,但退出时却“coredump”(核心转储)了,怎么回事? 联合 2.20 结构和联合有什么区别? 2.21 有办法初始化联合吗? 2.22 ...

    《你必须知道的495个C语言问题》

    2.18 既然数组名可以用作数组的基地址,为什么对结构不能这样? 29 2.19 程序运行正确,但退出时却“core dump ”(核心转储)了,怎么回事? 29 联合 30 2.20 结构和联合有什么区别? 30 2.21 有办法初始化...

    《Python Cookbook》第三版繁體中文

    2.1 使用多个界定符分割字符串:在字符串中使用多个分隔符进行分割操作。 2.2 字符串开头或结尾匹配:使用字符串的startswith()和endswith()方法进行匹配。 2.3 用Shell通配符匹配字符串:利用fnmatch模块在Python中...

    上海交大ACM模板,ACMer值得一看

    计算多面体体积是三维几何中的基本问题之一,涉及多边形的分割和积分。 #### 5.10 平面图轮廓 (Planar Graph Contour) 平面图轮廓是指在平面上绘制的图的边界形状。它是图形识别和分析中的重要内容。 #### 5.11 ...

    《Python Cookbook》第三版中文

    2.1 使用多个界定符分割字符串:介绍了如何使用多个字符作为界定符来分割字符串。 2.2 字符串开头或结尾匹配:说明了如何检查字符串是否以某个特定的子串开头或结尾。 2.3 用Shell通配符匹配字符串:讲解了如何...

    Python3高级教程

    2.18 字符串令牌解析:介绍如何将字符串分割成有意义的单元(令牌)。 2.19 实现一个简单的递归下降分析器:通过编程构建一个简单的语法分析器。 2.20 字节字符串上的字符串操作:在Python3中字节串和字符串是不同的...

    matplotlib手册

    - 子图的分割; - 子图的排列。 **2.22 图像** 图像模块提供了处理图像数据的方法,包括: - 图像的加载; - 图像的显示; - 图像的保存。 **2.23 legend 和 legend_handler** legend 模块提供了创建图例的方法...

    深度学习500问.pdf

    ##### 2.18 常见代价函数 常见的代价函数包括平方差代价函数、交叉熵代价函数等。 ##### 2.19 为什么用交叉熵代替二次代价函数? 交叉熵代价函数在很多情况下能提供更好的收敛速度和更好的性能。 ##### 2.20 什么...

    Python Cookbook 第3版 中文版

    - **2.18 字符串令牌解析** - **知识点**:介绍了如何使用正则表达式或其他工具来解析字符串中的令牌,这对于自然语言处理非常有用。 - **2.19 实现一个简单的递归下降分析器** - **知识点**:讨论了如何实现一个...

Global site tag (gtag.js) - Google Analytics