- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试学习回溯,为此我选择了一个 TopCoder 问题 - 它称为 BridgeCrossing。我们有 1-6 个人试图在晚上过桥,他们之间有一个手电筒。一次最多允许 2 人过桥,过桥时至少其中一人必须有手电筒,否则他们什么也看不到...
答案是一个给定 vector <int> times
的函数其中 times[i-1]
表示第 i 人过桥所需的时间(当 2 个人过桥时,他们的时间是来自较慢的人的时间)。此外,当我们在桥的另一侧有手电筒时,还有一些人需要过桥 - 必须有一个人拿着手电筒返回,以引导他们通过。
这是我的解决方案(所有出现的 vector <int>
都变成了 VI
):
int backtrack(VI times){
if (times.empty()) return 0;
if (times.size() == 1) return times[0];
if (times.size() == 2) return max(times[0], times[1]);
VI results;
for (int i = 0; i < times.size(); i++){
for (int j = 0; j < i; j++){
VI people_left1;
for (int k = 0; k < times.size(); k++){
if (k != i && k != j){
people_left1.push_back(times[k]);
}
}
people_left1.push_back(min(times[i], times[j]));
results.push_back(backtrack(people_left1)+
max(times[i], times[j]) + min(times[i], times[j]));
}
for (int j= i + 1; j < times.size(); j++){
VI people_left;
for (int k = 0; k < times.size(); k++){
if (k != i && k != j){
people_left.push_back(times[k]);
}
}
people_left.push_back(min(times[i], times[j]));
results.push_back(backtrack(people_left)+
max(times[i], times[j]) + min(times[i], times[j]));
}
}
int res = INT_MAX;
for (int i = 0; i < results.size(); i++){
if (results[i] < res){
res = results[i];
}
}
return res;
}
从理论上讲,它应该运作良好 - 我选择了所有可能的索引对 i,j,引导一个人(用更长的时间)通过,与一个人一起返回并递归剩下的人。不幸的是它不起作用 - 输入 {1,2,5,10}
它应该返回 17,但我的函数输出 19。
我已经盯着这段代码看了很长时间了,但我仍然看不到任何错误。一个人可能藏在哪里?另外,调试此类递归函数的技术是什么,因为我在很长一段时间内一直遇到问题。
最佳答案
问题是你没有考虑到一个已经留在对岸的人将来可以拿着手电筒回来。在这个例子中,2 号人在一段时间后返回。基本上不是第 i,j 对中的一个人会带着手电筒返回。
关于c++ - 我的回溯代码中的错误 - Bridge Crossing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27991160/
我的 ADT(Android 开发人员工具)工作正常,几天前它显示所有文件的图形布局,但今天它显示“无法加载 LayoutLib:com.android.layoutlib.bridge.Bridge
我正在尝试使用以下命令控制是否将通过我在 Docker 容器中设置的网桥的数据包发送到 iptables 进行处理: sysctl -w net.bridge.bridge-nf-call-ipt
我正在努力创建自己的自定义组件,以便与蓝牙设备进行交互。 I tried this in Swift , 但由于访问桥的问题而没有到达任何地方。 我在 Objective-C 中重新实现它并遇到了同样
是否有任何方法可以确定或任何资源可以找到 Haswell、Sandy Bridge、Ivy Bridge 和 Skylake Intel 处理器的分支目标缓冲区大小? 最佳答案 检查 Agner Fo
有什么解决办法吗? Error starting daemon: Error initializing network controller: could not delete the default
在 WSL2 中运行 docker info(在 ArchWSL 和 Ubuntu 20.04 上)我收到以下警告: WARNING: bridge-nf-call-iptables is disab
我正在使用 ansible 设置 kubernetes 集群。尝试启用内核 IP 路由时出现以下错误: Failed to reload sysctl: sysctl: cannot stat /pr
停止 docker 后,它拒绝重新启动。它提示另一个名为 docker0 的网桥已经存在: level=warning msg="devmapper: Base device already exis
我将这些文件从 Finder 直接添加到我的项目中,然后添加到 Xcode。 桥接 header 由 Xcode 自动创建。 #import 将类导入桥接 header - 桥接 header 没有问
我按照 Google Sign-in for iOS 上的所有说明进行操作使用CocoaPods(尽管我以前没有使用过CocoaPods,但仍然不明白它是什么),当我运行程序时,我收到此错误: bri
概述 桥接模式一种结构型模式,它主要应对的是:由于实际的需要,某个类具有两个或以上的维度变化,如果只是用继承将无法实现这种需要,或者使得设计变得相当臃肿。 桥接模式的做法是把变化的部分抽象出来,使
Android webView 不支持 Google oAuth。 Google 建议使用 chrome 自定义标签进行 oAuth。我也有从我的网络应用程序到 native 的 js 调用的要求。如
我正在从事一个网络项目,出于某种原因,我需要修改 Linux 中使用的网桥的源代码。我想知道如何添加 http://lxr.free-electrons.com/source/net/bridge/源
Docker 似乎在容器开始运行后创建了一个桥,然后与我的主机网络发生冲突。这不是默认的桥 docker0,而是在容器启动后创建的另一个桥。我可以根据较旧的用户指南链接 https://docs.do
桥接模式属于先天模式,这里的先天模式就是说一开始就要把结构搭建好,方便后来的扩展,而不是对已经出现的模块和接口进行改进扩展的。桥接的核心在于实体类和操作类之间的聚合关系,这个聚合关系就是我们所说的&
1、桥梁模式结构图 2、桥梁模式中主要角色 抽象化(Abstraction)角色:定义抽象类的接口并保存一个对实现化对象的引用。 修正抽象化(Refined Abstractio
代码如下: <?php /** * 桥接模式 * * 将抽象部份与它实现部分分离,使用它们都可以有独立的变化 */
题目地址:https://leetcode.com/problems/shortest-bridge/description/ 题目描述 Ina given 2D binary array A,
桥接模式(Bridge Pattern)是用于把抽象化与实现化解耦,使得二者可以独立变化 桥接模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类,这两种类型的类可被结构化改变而互不影响
LocalAppData为由 Desktop App Converter 转换的应用程序虚拟化. 例如。 “真实”LocalAppData地点是: C:\Users\user\AppData\Loca
我是一名优秀的程序员,十分优秀!