- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正在学习 DP,我正在通过 topsider 教程学习,并试图解决问题 ZigZag sequence理解并知道解决方案与计算最长递增子序列的长度非常相似。我编写了一个简单的 C++ DP 解决方案,如下所示:
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
int n = 50;
int numbers[] =
{ 374, 40, 854, 203, 203, 156, 362, 279, 812, 955,
600, 947, 978, 46, 100, 953, 670, 862, 568, 188,
67, 669, 810, 704, 52, 861, 49, 640, 370, 908,
477, 245, 413, 109, 659, 401, 483, 308, 609, 120,
249, 22, 176, 279, 23, 22, 617, 462, 459, 244 };
vector<int> length(n, 1);
for(int i = 1;i < n;i++)
{
for(int j = (i - 1);j >= 0;j--)
{
if(length[j] + 1 > length[i])
{
if(length[j] % 2 == 0)
{
if(numbers[i] - numbers[j] < 0)
{
length[i] = length[j] + 1;
}
}
else
{
if(numbers[i] - numbers[j] > 0)
{
length[i] = length[j] + 1;
}
}
}
}
}
printf("%d\n", *(max_element(length.begin(), length.end())));
}
但问题是代码在所有其他情况下都能正常工作,除了这个:
{ 374, 40, 854, 203, 203, 156, 362, 279, 812, 955,
600, 947, 978, 46, 100, 953, 670, 862, 568, 188,
67, 669, 810, 704, 52, 861, 49, 640, 370, 908,
477, 245, 413, 109, 659, 401, 483, 308, 609, 120,
249, 22, 176, 279, 23, 22, 617, 462, 459, 244 }
我的代码打印出答案 35
而 topsider 认为它是 36
。我知道我在程序中犯了一些愚蠢的错误,但是很长一段时间以来一直在努力寻找它,其他人可以帮我找出错误吗?
最佳答案
我怀疑问题在于第一个差异可以是正数也可以是负数,但您的代码只支持其中一种情况。
也许你应该运行这段代码两次,一次先是正数,然后第二次先是负数。
关于c++ - Zig-Zag 序列 [动态编程] 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27804046/
下面的 get 函数在我看来就像它返回一个切片,该切片引用数组中的数据,一旦函数返回,该切片将超出范围,因此出错。假设这是真的,有没有办法在编译时甚至在 Debug模式下运行时检测到这一点? 我找不到
受 https://benhoyt.com/writings/count-words/ 启发,我尝试过用多种语言重写一个内部日志分析脚本(我不会像文章那样深入!)。 在 Go(我自己)和 Rust(在
我正在使用 zig 0.7.0.我正在尝试从数组中导入 zig 源文件列表。每个源文件都有一个 main我想调用的函数(其返回类型是 !void )。数组 module_names在编译时已知。 这是
我正在关注 this blog post在 Zig 的“comptime”上。 以下行不再在 Zig 中编译 0.6.0 . const user_input = try io.readLineSli
我试图将输出流传递给函数,但无法正确执行。此示例代码展示了我尝试过的一些事情 // Attempts to pass stream or writer to a function const std
我不太明白为什么 splay 树数据结构中的旋转不仅要考虑评级节点的父节点,还要考虑祖父节点(zig-zag 和 zig-zig 操作)。为什么以下内容不起作用: 例如,当我们向树中插入一个新节点时,
我不太明白为什么 splay 树数据结构中的旋转不仅要考虑评级节点的父节点,还要考虑祖父节点(zig-zag 和 zig-zig 操作)。为什么以下内容不起作用: 例如,当我们向树中插入一个新节点时,
在阅读 zig 的文档时,我的印象是 zig 可以编译 C 和 C++ 代码。因此,我认为您可以通过 @cImport 导入 C++ 文件的 header 。并且有 zig build成功。但是,我似
好的,这里是 splay 算法,如果你想检查的话。 这是我的 splay 函数: template void SplayTree::Do_Splay(SplayNODE *temp) //tem
我正在慢慢学习 zig,但我不明白 const 以及它如何与数组/类型交互 - 我正在学习 https://ziglang.org/documentation/0.6.0/#Introduction但
我想避免因为文件太大或足够小以至于缓冲区中有空白空间之类的事情而创 build 置大小的缓冲区。 ArenaAllocator 听起来很有前途,因为您可以根据需要分配更多空间。是否有“正确”的方法来执
我想避免因为文件太大或足够小以至于缓冲区中有空白空间之类的事情而创 build 置大小的缓冲区。 ArenaAllocator 听起来很有前途,因为您可以根据需要分配更多空间。是否有“正确”的方法来执
是否可以在 zig 中创建一个 comptime 函数来生成新的结构类型?该函数将接收一个字符串数组和一个类型数组。字符串是后续结构字段的名称。 最佳答案 不。这个在https://github.co
我有这样的字符串 xxoxxooo,我想将它编辑成这种形式 xoxoxoxo,我的问题是如何找到最小交换次数,我只能交换 2 个邻居作为交换。我考虑过遍历字符串并找到最接近的冗余 x 并将其移动到当前
我试图用通用算法实现向量代数,结果却玩弄了迭代器。我发现了两个不明显和意外行为的例子: 如果我有一个指针 p 指向一个带有字段 fi 的结构(实例),我可以像 p.fi 一样简单地访问该字段(而不是
菜鸟问题: 我想改变数组列表中存在的值。我最初尝试只抓取索引项并直接更改其字段值。 const Foo = struct { const Self = @This(); foo: u8
是否可以为 struct 创建分配包含类型作为属性? 例如 示例结构是 const Content = struct { content: type, name: []const u8
我创建了一个 C 文件: int main() { return 1; } 我使用 Zig 的 translate-c 命令行选项生成一个 zig 文件,我只得到一些全局变量声明,如 pub co
我已经找到了以下完美的 CSS 片段,它在这个 link 处创建了 zip zag 边框. .h-zigzag { background: linear-gradient(-1
我想从 Zig 调用 error(3) 函数。 我可以通过定义一个名称不是 Zig 关键字的新符号来做到这一点: @cInclude("error.h"); @cDefine("_error", "e
我是一名优秀的程序员,十分优秀!