我想要一种算法(没有特定的语言)来从一组整数中找到一个子集,使得它们的总和在一定范围内.
例如,如果我有一群人,其权重如下.
var people:{
jane:126,
julia:112,
charles:98,
john:182,
bob:213,
edgar: 237,
jay: 223,
dan: 191,
alex: 210,
david: 196
}
Run Code Online (Sandbox Code Playgroud)
现在,从这些人那里,我想找到一个总重量在818-822磅之间的子集(如果你正在尝试数学......不要打扰,这些数字不在我的脑海中,我甚至不知道这个数据集是否有解决方案).群体中的人数无关紧要,只是来自较大群体的群体.实际上,任何一个团队都会这样做(尽管在我的情况下随机更好).
请注意,这只是一个简单的例子......实际上会有数百人,并且可能没有符合此标准的组合.因为实际的数字会比这大得多,所以我关心的是^ n问题并且经历了数千次迭代,即使我需要这个很快就能运行.
也许那天我在计算机科学课上睡着了,但除了蛮力方法之外,我还没有能够提出任何其他方法.
我把它标记为javascript,只是因为它最接近我的实际实现(并且它更容易阅读).对其他解决方案持开放态度,只要它们不在某个Cthulhu函数的基础上.
我知道这是一个很难问的问题,但是在这里任何帮助都会受到赞赏.
好吧,我很难过.23个小时发布我可以代码编码的东西的赏金 - 我的背景肯定不在这个领域,我很难辨别用于描述问题的符号,更不用说解决方案了.
有人想帮助我,并给我一些示例javascript代码,我可以修改到最终项目?我会尽可能地增加一个250pt的赏金......但是如果有一个像样的解决方案,我会在时机成熟的时候把它拿出来.
我正在尝试将我的 Typescript 项目配置为具有以下目录结构:
\n\nsrc/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 client/\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tsconfig.json\n\xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 server/\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tsconfig.json\n\xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 shared/\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 utils/\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 type-utils.d.ts\n\xe2\x94\x82 \xe2\x94\x82\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tsconfig.json\n\xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tsconfig-base.json\nRun Code Online (Sandbox Code Playgroud)\n\nclient/tsconfig.json, server/tsconfig.json, 且shared/tsconfig.json各有"extends": "../tsconfig-base.json"
client/tsconfig.json并且server/tsconfig.json两者都有"references": [{ "path": "../shared" }]
shared/utils/type-utils.d.ts不是模块,而是包含环境类型声明,例如Id和CouldBeNull,以及声明合并 for Array(定义flatMap方法)。
这个想法是,tsconfig-base.json可以包含许多通用设置,个人tsconfig.json可以定义与该子项目相关的设置(例如 React for client/tsconfig.json、 Node for server/tsconfig.json),并且shared/可以在client/和 之间共享server/。
问题是环境声明和声明合并shared/utils/type-utils.ts不能被 …
好吧,所以我有一个情况,我调用LoadLibrary我写的DLL.对LoadLibrary的此调用将返回错误#998或ERROR_NOACCESS"对内存位置的无效访问".
有问题的DLL在一种配置中使用MFC,而在另一种配置中不使用; 只有MFC配置有这个问题.它曾经工作,但我不知道我改变了什么:我实际上转向了非MFC版本,并且一直在修补它,我不知道我能做些什么影响了MFC版本.
我不太了解DLL.原来的加载代码实际上是给我的,我没有改变它.以下是该代码:
// submodule loading
#ifndef MFC
// Project uses standard windows libraries, define an entry point for the DLL to handle loading/unloading
BOOL WINAPI DllMain(HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved)
{
_MESSAGE("DllMain called.");
switch(dwReason)
{
case DLL_PROCESS_ATTACH: // dll loaded
hModule = (HMODULE)hDllHandle; // store module handle
_MESSAGE("Attaching Submodule ...");
break;
case DLL_PROCESS_DETACH: // dll unloaded
_MESSAGE("Detaching Submodule ...");
break;
}
return true;
}
#else
// Project uses MFC, we define …Run Code Online (Sandbox Code Playgroud) 我正在用简单的瓷砖创建一个等轴测图,我已经扩展RelativeLayout到创建一个包含这些瓷砖的布局.实际上,RelativeLayout只要我的方向与将图块写入XML文件的顺序相匹配,只需使用as-is就可以正常工作; 所有我覆盖的都是构造函数,我只需调用它,super然后setChildrenDrawingOrderEnabled(true);设置一些变量(网格的高度和宽度),然后getChildDrawingOrder自己.
我的代码用于getChildDrawingOrder计算给定子级的新索引,并且还在子级中设置一个字符串i->i',其中i是原始索引并且i'是新索引.我正在用它进行测试; 孩子们设置为自己绘制这个字符串及其坐标.
不幸的是,它无法正常工作,或者说工作不正常.在我的测试用例中的九个瓦片中,有三个看起来根本没有getChildDrawingOrder调用过:我上面提到的字符串是null.其余的,尽管传递了正确的索引,但至少有一个被抽出.
这是一张图片(在TOP方向上):

请注意,(0,2),(1,2)和(2,1)都列为NULL,因此getChildDrawingOrder似乎从未为它们调用过.还要注意,(1,0)绘制在(1,1)之上,即使它的i(3)和i'(1)都小于(1,1)(分别为4和4).
这是以下代码getChildDrawingOrder:
@Override
protected int getChildDrawingOrder(int childCount, int i)
{
TileView ch = (TileView)getChildAt(i);
ch.order = "Called"; // this string is drawn on my children
int gx, gy; // the "true" x,y for the current rotation,
// where 0,0 is …Run Code Online (Sandbox Code Playgroud) 我正在使用LPARAM(基本上是一个long,除非我们在64位系统上,在这种情况下它是一个long long)一个LVITEM(被调用的)成员lParam来存储指向与该条目重合的对象的指针ListView.
当我想编辑那个项目时,我想将它转换LPARAM为a MyClass*,只要lParam正确设置为首先等于a MyClass*,它就可以正常工作,但是我想做一些检查以确保事实上,MyClass这是一个这个数字所指向的.
目前我有这个:
LVITEM lv;
// lv is filled in by LVM_GETITEM
classPtr = static_cast<MyClass*>((void*)lv.lParam);
if ( !classPtr )
return false;
Run Code Online (Sandbox Code Playgroud)
现在,我并不完全清楚:如果参数不是有效指针,它会static_cast返回NULL吗?我假设没有,因为那dynamic_cast是为了什么,但我不完全确定.并且,如果我在这个假设中classPtr是正确的,在我尝试访问其成员并导致崩溃之前,有没有办法检查它是否有效...
所以我有一个看起来像这样的项目:
app/
bin/
lib/
src/
main/
submodule.ts
utilities/
common.ts
main.ts
tsconfig.json
gulpfile.js
并app/src/main/submodule.ts需要导入app/src/utilities/common.ts.我正在尝试使用ES6语法.因此,我期待这样的事情submodule.ts:
import {common} from '/utilities/common';
Run Code Online (Sandbox Code Playgroud)
当根/是app/src/因为这是tsconfig被发现.是的,app/src/utilities/common.ts确实导出了一个名为的模块common.
问题是我得到"找不到模块'/ utilities/common'"错误.我尝试过各种各样的事情:
utilities/common/src/utilities/common/app/src/utilities/common这些都不起作用.相对路径../utilities/common确实有效,但常见模块的相对路径是维护噩梦.
值得注意的是,我刚刚从TS 1.5更新到1.6:使用utilities/common曾在1.5中工作过.然而,我在1.6音符中找不到任何关于这些线路的突破性变化.
我提到了gulpfile.ts和其他文件夹,因为最终我希望Gulp从中获取TS文件src并将编译后的JS文件放入bin.我有理由相信我已经为此正确配置了Gulp gulp-typescript,但是为了完成起见,这里是我的tsconfig.json和gulpfile.js.
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"noEmitOnError": true
},
"filesGlob": [
"./**/*.ts",
"!./typings/**/*.ts"
]
} …也就是说,我知道当你写 时tag`Foo ${\'bar\'}.`;,\xe2\x80\x99 只是tag([\'Foo \', \'.\'], \'bar\');.\xc2\xb9的语法糖
但只是呢\xe2\x80\x8b`Foo ${\'bar\'}.`;?我可以 \xe2\x80\x99t 只是 \xe2\x80\x9ccall\xe2\x80\x9d ([\'Foo \', \'.\'], \'bar\');。如果我已经有这种形式的参数,我应该将它们传递给什么函数?
我只对实现模板文字功能的本机函数感兴趣。我很有能力自己滚动,但这个问题的目的是避免这种情况并正确执行 \xe2\x80\x9cproperly\xe2\x80\x9d\xe2\x80\x94 即使我的实现与当前本机完美匹配功能,本机功能可能会发生变化,但我希望我的用法仍然匹配。因此,这个问题的答案应采用以下形式之一:
\n要使用的本机函数的名称,最好包含其文档的链接和/或引用。
\n规范的链接和/或引用精确定义了此函数的实现,因此,如果我自己推出,至少我可以确保它\xe2\x80\x99s 符合(当前)规范。
\n本机实现不可用且未指定的备份声明。理想情况下,这再次得到文档链接和/或引用的支持,但如果\xe2\x80\x99s不可用,我\xe2\x80\x99将接受支持此声明的其他来源或论证。
\nraw属性,因为它\xe2\x80\x99是一个TemplateStringsArray而不是常规数组,但我\xe2\x80\x99m在这里跳过它是为了使示例更具可读性。我正在尝试创建一个标签函数(tag例如),它在内部对输入执行默认模板文字连接。也就是说,我正在获取TemplateStringsArray和剩余的参数,并将它们转换为已经整理好模板的单个字符串。(这可能是为了将结果传递到另一个标记函数中,otherTag我希望第二个函数将所有内容视为单个字符串文字而不是破碎的模板。)
例如,tag`Something ${\'cooked\'}.`;相当于otherTag`Something cooked.`;.
的定义tag看起来像这样:
function tag(textParts, …Run Code Online (Sandbox Code Playgroud) 这是一个相当小的问题,但它让我烦恼:IntelliSense似乎确信在条件中声明函数范围内的静态变量if是一个错误,并抱怨它.只有它构建得很好,甚至MSDN文档都将其视为合法用法.我真的想摆脱波浪般的红线,因为它经常出现(它在我经常使用的宏中使用).
这是代码,作为一个例子,虽然它不是我的程序中唯一的例子:
MyForm::MyForm()
{
_VMESSAGE("Constructing '%s'/%p:%p @ <%p>",GetEditorID(),GetFormType(),formID,this);
if (static bool runonce = true)
{
// patch up vtbl
memaddr thisvtbl = (UInt32)memaddr::GetObjectVtbl(this);
_MESSAGE("Patching MyForm Form vtbl @ <%p>",thisvtbl);
gLog.Indent();
for (int i = 0; i < sizeof(Form_NoUseMethods)*0x8; i++)
{
if ((Form_NoUseMethods[i/0x20] >> (i%0x20)) & 1)
{
thisvtbl.SetVtblEntry(i*4,TESForm_vtbl.GetVtblEntry(i*4));
_VMESSAGE("Patched Offset 0x%04X",i*4);
}
}
gLog.Outdent();
runonce = false;
}
}
Run Code Online (Sandbox Code Playgroud)
无论是static在if ( static bool runonce = true )线路和的每次使用_MESSAGE或_VMESSAGE(它使用了类似的构建体)是由智能感知下划线,和鼠标悬停在任何读取"错误:存储类可能不会在这里指定" 构建项目不会产生与这些线路相关的错误.
所以我创建了一个父窗口,然后使用CreateWindowEx创建了一个子窗口.现在,当我创建子窗口时,我给它了一个WS_POPUP样式.
MSDN说:
WS_POPUP
0x80000000L
窗口是一个弹出窗口.此样式不能与WS_CHILD样式一起使用.
该窗口是一个弹出窗口,是我的另一个窗口的子窗口.我想我对WS_CHILD风格是什么感到困惑,因为我仍然可以让我的弹出窗口成为另一个窗口的孩子?
c++ ×4
windows ×3
javascript ×2
typescript ×2
algorithm ×1
android ×1
build ×1
casting ×1
dependencies ×1
dll ×1
drawing ×1
import ×1
intellisense ×1
java ×1
loadlibrary ×1
parent-child ×1
static ×1
templates ×1
tsconfig ×1
winapi ×1
window ×1