我有一个整数高度和恒定宽度1的直方图.我想在直方图下最大化矩形区域.例如:
_
| |
| |_
| |
| |_
| |
Run Code Online (Sandbox Code Playgroud)
使用col1和col2,答案是6,3*2.
O(n ^ 2)蛮力对我来说很清楚,我想要一个O(n log n)算法.我试图按照最大增加子序列O(n log n)算法的方式来思考动态编程,但我没有继续前进.我应该使用分而治之的算法吗?
PS:如果没有这样的解决方案,请求具有足够声誉的人删除分而治之标签.
在mho评论之后:我的意思是完全适合的最大矩形区域.(感谢j_random_hacker澄清:)).
我正在寻找一种从RTF字符串中删除文本的方法,我找到了以下正则表达式:
({\\)(.+?)(})|(\\)(.+?)(\b)
Run Code Online (Sandbox Code Playgroud)
但是,结果字符串有两个直角括号"}"
之前: {\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 MS Shell Dlg 2;}{\f1\fnil MS Shell Dlg 2;}} {\colortbl ;\red0\green0\blue0;} {\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\tx720\cf1\f0\fs20 can u send me info for the call pls\f1\par }
后: } can u send me info for the call pls }
有关如何改进正则表达式的任何想法?
编辑: 一个更复杂的字符串,如这个不起作用: {\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 MS Shell Dlg 2;}} {\colortbl ;\red0\green0\blue0;} {\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\tx720\cf1\f0\fs20 HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\test\\myapp\\Apps\\\{3423234-283B-43d2-BCE6-A324B84CC70E\}\par }
我正在尝试使用Northwind OData服务:
http://services.odata.org/V3/OData/OData.svc/Products?$format=json
并将其反序列化为一组产品:
using (var client = new HttpClient())
{
HttpResponseMessage response = await client.GetAsync(new Uri(url));
ObservableCollection<Product> products = await response.Content.ReadAsAsync<ObservableCollection<Product>>();
}
Run Code Online (Sandbox Code Playgroud)
但是序列化程序似乎并不喜欢那odata.metadata
部分和事实,那里有2 odata.type
条记录(不确定它们是什么).
是否有捷径可寻?
我正在研究一种算法,我给它一些输入,我给它们输出,并给出输出3个月(给或拿)我需要一种方法来查找/计算可能是未来的输出.
现在,给出的这个问题可能与证券交易所有关,我们给出了证明约束和某些结果,我们需要找到下一个.
我偶然发现神经网络股票市场的预测,你可以谷歌它,或者你可以在这里,这里和这里阅读它.
要开始制作算法,我无法弄清楚层的结构应该是什么.
给定的约束是:
现在,我的第一个问题是,我需要输入多少个节点?
输出只有一个,很好.但正如我所说,我应该为输入层采用100个节点(假设股票价格总是整数,并且总是btw 1和100?)
隐藏层怎么样?那里有多少个节点?比方说,如果我在那里采用100个节点,我认为这不会对网络进行太多训练,因为我认为对于每个输入我们还需要考虑所有先前的输入.
比如说,我们在第4个月的第1天计算输出,我们应该在隐藏/中间层有90个节点(为了简单起见,想象每个月是30天).现在有两种情况
无论情况如何,现在当我们计算第4个月第2天的输出时,我们不仅需要那些90个输入,而且还需要最后的结果(而不是预测,它是否相同!)所以我们现在我们的中间/隐藏层有91个节点.
依此类推,它每天都会增加节点数量,AFAICT.
所以,我的另一个问题是,如果动态变化,我如何定义/设置隐藏/中间层中的节点数.
我的最后一个问题是,有没有其他特殊的算法(对于这种事物/东西),我不知道?我应该使用而不是搞乱这个神经网络的东西?
最后,有什么东西,我可能会失踪,可能会导致我(而不是我正在做的算法)预测输出,我的意思是任何警告,或任何可能使我错过的东西,我可能会失踪?
[TestClass]
public class MsProjectIntegration {
const int? projectID = null;
// The type 'int?' cannot be declared const
// ...
}
Run Code Online (Sandbox Code Playgroud)
为什么我不能拥有const int?
?
编辑:我想要一个可空的int作为const的原因是因为我只是用它来从数据库加载一些示例数据.如果它为null我只是在运行时初始化样本数据.这是一个非常快速的测试项目,显然我可以使用0或-1,但int?
感觉就像我想做的那样正确的数据结构.readonly似乎是要走的路
我知道这可能是一个漫长的过程,但有人可能会告诉我在PHP中当前实现的MD5算法出错了吗?我似乎无法弄清楚它有什么问题.
它返回一个32个字符的十六进制字符串(25%的时间它产生的字符串少于32个字符),但它没有产生与内置MD5函数相同的32个字符.
非常感谢你.
<?php
function MD($string){
$a = "67452301";
$b = "EFCDAB89";
$c = "98BADCFE";
$d = "10325476";
$words = init($string);
for($i = 0; $i <= count($words)/16-1; $i++){
$A = $a;
$B = $b;
$C = $c;
$D = $d;
/* ROUND 1 */
FF ($A, $B, $C, $D, $words[0 + ($i * 16)], 7, "d76aa478");
FF ($D, $A, $B, $C, $words[1 + ($i * 16)], 12, "e8c7b756");
FF ($C, $D, $A, $B, $words[2 + ($i * 16)], 17, "242070db"); …
Run Code Online (Sandbox Code Playgroud) 我是打字稿的新手,我在最新的Visual Studio 2015 RC中试用了它.
目前,当我保存ts文件时,它会自动编译typescript文件并创建底层的js文件(当你展开它时很好地在.ts文件下面).但是,没有源映射文件,因此在调试时我无法在visual studio中的打字稿中找到任何断点(无论使用IE还是Chrome金丝雀).
有没有办法启用它所以它会在保存时生成源图文件?从搜索周围看来,许多编译器选项曾经在移动或不可用的Web要素中(但是?):
这是Python语法的一个子集:
single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE
stmt: simple_stmt | compound_stmt
simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE
small_stmt: pass_stmt
pass_stmt: 'pass'
compound_stmt: if_stmt
if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite]
suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT
Run Code Online (Sandbox Code Playgroud)
(您可以在Python SVN存储库中阅读完整语法:http://svn.python.org/.../Grammar)
我试图用这个语法在Python中生成Python的解析器.我遇到的问题是如何将这些INDENT
和DEDENT
令牌表达为pyparsing对象.
以下是我实现其他终端的方法:
import pyparsing as p
string_start = (p.Literal('"""') | "'''" | '"' | "'")
string_token = ('\\' + p.CharsNotIn("",exact=1) | p.CharsNotIn('\\',exact=1))
string_end = p.matchPreviousExpr(string_start)
terminals = …
Run Code Online (Sandbox Code Playgroud) 如果定义While
构建器对象的方法,则可以while
在计算表达式中使用-loops .该While
方法的签名是:
member b.While (predicate:unit->bool, body:M<'a>) : M<'a>
Run Code Online (Sandbox Code Playgroud)
为了比较,该For
方法的签名是:
member b.For (items:seq<'a>, body:unit->M<'a>) : M<'a>
Run Code Online (Sandbox Code Playgroud)
您应该注意到,在While
-method中,body是一个简单类型,而不是方法中的函数For
.
你可以let
在计算表达式中嵌入一些其他语句,比如函数调用,但是那些不可能在while
-loop中不可能执行多次.
builder {
while foo() do
printfn "step"
yield bar()
}
Run Code Online (Sandbox Code Playgroud)
为什么while
-loop不会被执行多次,而只是重复?为什么与for循环有显着差异?更好的是,是否有一些在计算表达式中使用while循环的策略?
我有一个IronPython脚本,它针对SQL Server数据库执行一堆SQL语句.语句是大字符串,实际上包含多个语句,由"GO"关键字分隔.当它们从sql管理工作室和其他一些工具运行时可以工作,但不能在ADO中运行.所以我使用2.5"re"模块拆分字符串,如下所示:
splitter = re.compile(r'\bGO\b', re.IGNORECASE)
for script in splitter.split(scriptBlob):
if(script):
[... execute the query ...]
Run Code Online (Sandbox Code Playgroud)
在罕见的情况下,这会打破注释或字符串中的单词"go".如何解决这个问题?即正确地将此字符串解析为两个脚本:
-- this is a great database script! go team go!
INSERT INTO myTable(stringColumn) VALUES ('go away!')
/*
here are some comments that go with this script.
*/
GO
INSERT INTO myTable(stringColumn) VALUES ('this is the next script')
Run Code Online (Sandbox Code Playgroud)
编辑:
我搜索了更多,发现了这个SQL文档:http: //msdn.microsoft.com/en-us/library/ms188037(SQL.90).aspx
事实证明,GO必须按照自己的方式提出一些答案.然而,它后面可以跟一个"count"整数,它实际上会多次执行语句批处理(之前有人实际使用过它),然后可以在同一行上单行注释(但不是多行,我测试了这个.)所以神奇的正则表达式看起来像:
"(?m)^\s*GO\s*\d*\s*$"
Run Code Online (Sandbox Code Playgroud)
除此之外不考虑:
"--"
后跟换行符之外的任何字符).我不关心捕获"计数"参数并使用它.现在我有一些技术文档,我非常接近写这个"规范",而且再也不用担心了.