选择点,使得x坐标的总和= y坐标的总和

 吴伟琬63526 发布于 2023-02-13 17:24

我有一系列的Points.我需要从中选择一个点子集,这样点的x坐标之和=点的y坐标之和.如果存在许多这样的子集,则需要具有最大x坐标总和的子集.需要报告x坐标的总和.

我写了一个强力递归方法,测试所有可能性.

Point[] a = new Point[n];
// ...
private int rec(int i, int x, int y) {
    if (i == n - 1) {
        if (x + a[i].x == y + a[i].y) return x + a[i].x;
        return (x == y) ? x : -1;
    }
    return Math.max(rec(i + 1, x, y), rec(i + 1, x + a[i].x, y + a[i].y));
}

答案是rec(0, 0, 0).

我的问题是:

1)有没有动态编程解决方案?
2)如果是,可以请任何人解释

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有