请考虑以下示例:
class Base {}
class Derived : Base {}
class Test1
{
private List<Derived> m_X;
public IEnumerable<Base> GetEnumerable()
{
return m_X;
}
}
Run Code Online (Sandbox Code Playgroud)
编译得很好,因为它IEnumerable<T>
是协变的T
.
但是,如果我做同样的事情,但现在使用泛型:
class Test2<TBase, TDerived> where TDerived : TBase
{
private List<TDerived> m_X;
public IEnumerable<TBase> GetEnumerable()
{
return m_X;
}
}
Run Code Online (Sandbox Code Playgroud)
我得到编译器错误
无法将表达式类型'System.Collection.Generic.List'转换为返回类型'System.Collection.Generic.IEnumerable'
我在这做错了什么?
给定: set (),with .A = {a0, a1, ..., aN-1}
1 ≤ N ≤ 100
2 ≤ ai ≤ 500
问:找到所有A
大小至少为2的子集的所有最小公倍数(LCM)的总和.
一组的LCM 被定义为最小整数,使得对于所有.B = {b0, b1, ..., bk-1}
Bmin
bi | Bmin
0 ≤ i < k
例:
让N = 3
与A = {2, 6, 7}
,则:
LCM({2, 6}) = 6
LCM({2, 7}) = 14
LCM({6, 7}) = …
Run Code Online (Sandbox Code Playgroud) algorithm primes computer-science dynamic-programming prime-factoring
假设你在一个带N
开关的房间里,隔壁房间里有一个灯泡.只有当某些指定的开关全部打开时,灯泡才会发光.
组
switches
=所有开关的集合.|switches| = N
.required
=需要打开的开关才能使灯泡发光. 不需要的开关无关紧要.
只有进入下一个房间,才能检查灯泡是否发光.您可以打开或关闭某些开关,转到下一个房间检查灯泡,然后重复此过程.让我们称之为ATTEMPT.
假设N
在WORST CASE中有一些开关,找出这组required
开关所需的最小尝试次数(使用优化策略)是多少?
例如,
switches = { 1, 2, 3 }
required = { 1, 2 }
让我们尝试一种天真的方法:
{ 1, 2 }
,灯光正在发光.(确保不需要开关3){ 1, 3 }
,灯不亮.(确保需要开关2){ 2, 3 }
,灯不亮.(确保需要开关1)因此,通过3次尝试,我们可以确保required = { 1, 2 }
.
这个问题的优化算法是什么?
我们worst(N)
要考虑的最小尝试N
在最坏的情况下开关.你能找到答案吗?worst(N)
更新:如果您认为worst(N) = N
,您能提供正式证明吗?
我正在寻找一种快速算法来找到素数有限域中单变量多项式的根.
也就是说,如果 (n> 0)那么对于给定的素数p ,找到满足的算法.f = a0 + a1x + a2x2 + ... + anxn
r < p
f(r) = 0 mod p
我发现了Chiens搜索算法https://en.wikipedia.org/wiki/Chien_search但是我无法想象这对于大于20位的素数来说是快速的.有没有人有使用Chien的搜索算法的经验或知道更快的方法?这是否有一个sympy模块?
我面临一个非常讨厌的问题,我无法识别.
我正在运行一个包含数千个对象的非常大的业务ASP.Net应用程序; 它使用内存中的序列化/反序列化与MemoryStream来克隆应用程序的状态(保险合同)并将其传递给其他模块.它运作良好多年.现在有时,不是系统地,在序列化中它抛出异常
十进制字节数组构造函数需要一个包含有效十进制字节的长度为4的数组.
使用相同的数据运行相同的应用程序,5次中的3次有效.我启用了所有CLR异常,Debug - Exceptions - CLR Exception - Enabled,所以我猜如果错误的初始化/分配到十进制字段,程序应该停止.它不会发生.
我试图在更基本的对象中拆分序列化,但是尝试识别导致问题的字段非常困难.从生产中的工作版本开始,我从.Net 3.5传递到.NET 4.0,并且已经对UI部分进行了一致的更改,而不是业务部分.耐心地,我会经历所有的变化.
它看起来像老式的C问题,当char *p
它写不应该的时候,并且只有在序列化过程中它检查问题弹出的所有数据时.
在.Net的托管环境中是否可以这样?应用程序是巨大的,但我看不到异常的内存增长.什么是调试和追踪问题的方法?
下面是stacktrace的一部分
[ArgumentException: Decimal byte array constructor requires an array of length four containing valid decimal bytes.]
System.Decimal.OnSerializing(StreamingContext ctx) +260
[SerializationException: Value was either too large or too small for a Decimal.]
System.Decimal.OnSerializing(StreamingContext ctx) +6108865
System.Runtime.Serialization.SerializationEvents.InvokeOnSerializing(Object obj, StreamingContext context) +341
System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) +448
System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjectInfo objectInfo, NameInfo memberNameInfo, …
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种沿着矩形周边的一部分分布点的方法。这些点需要彼此距离均匀。
我有一个矩形(通常是正方形)边界,以及沿该周边的 2 个点(ps
和pe
),标记了点的允许范围。这里我用红色标记了允许的范围:
我需要n
沿着该线段放置点(通常是 1-3 个)。这些点需要均匀分布d
。n0
所以..n1
和n1
..等之间的距离n2
应该都是d
。出于分布目的,边界点也很重要,因此第一个点和最后一个点之间的距离 和ps
/也pe
应该d
如此。
这似乎是一项简单的任务,但我很快意识到这种简单的方法在这里不起作用。获取线段的长度并除以n
+1 不会考虑角点。例如:n
= 1,使点太靠近pe
:
我的数学很生疏(日常工作通常不需要太多数学),但我尝试了几种不同的方法,但都没有完全解决。我能够使用向量求解= 1,方法是找到和n
之间的中点,找到垂直向量,然后将其与线段相交,如下所示。我不知道如何使这种方法发挥作用,如果是其他的话,或者即使它可以做到。ps
pe
n
最后一点,如果完全均匀分布不切实际,那么足够好的近似值就可以了。理想情况下,在整个范围内近似值的偏差大致相同(而不是说,在边缘处更差)。
如何在java中设计2D数组,使其允许多个线程在不使用同步的情况下修改或插入特定位置的值
任何人都可以帮助java中的bellman ford算法来计算源顶点的最短路径.
我还希望在遍历所有边缘之后为每个节点打印最终更新的前任节点,并且在所有迭代之后这是我的代码
import java.io.*;
import java.util.*;
public class BellmanFord {
LinkedList<Edge> edges;
int d[];
int n,e,s;
final int INFINITY=999;
private static class Edge {
int u,v,w;
public Edge(int a, int b, int c) {
u=a;
v=b;
w=c;
}
}
BellmanFord() throws IOException {
int item;
edges = new LinkedList<Edge>();
BufferedReader inp = new BufferedReader (new InputStreamReader(System.in));
System.out.print("Enter number of vertices ");
n = Integer.parseInt(inp.readLine());
System.out.println("Cost Matrix");
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
item = Integer.parseInt(inp.readLine());
if(item != 0)
edges.add(new …
Run Code Online (Sandbox Code Playgroud) 我真的不明白为什么我的变量未定义这是我的代码:
Calendar = function() {
this.data;
this.init = function(path, callback){
$.ajax({
url:path,
type:'GET',
success:function(data){
this.data = data;
console.log(this.data);
callback();
}
})
}
this.create = function(){
this.generateYear();
}
this.generateYear = function(){
console.log(this.data);
}
}
Run Code Online (Sandbox Code Playgroud)
我这样使用它:
$(document).ready(function(){
var calendar = new Calendar();
calendar.init(path,function(){
calendar.create();
});
});
Run Code Online (Sandbox Code Playgroud)
所以第一个console.log是好的,但第二个是未定义的,我不明白为什么因为他之后被调用.
谢谢你的帮助
让我们说一个有这个基本的xml文档:
<result name="response" numFound="73" start="0">
<doc>
<str name="contentType">Content1</str>
<str name="content">Some content here</str>
</doc>
<doc>
<str name="contentType">Content2</str>
<str name="content">Some other content</str>
</doc>
</result>
Run Code Online (Sandbox Code Playgroud)
我打算为每种内容类型使用不同的模板.什么是模板匹配参数?当只有contentType字段是特定值时,我无法弄清楚如何匹配doc的其他子节点.
我现在正在编写很多java,所以我对java 静态方法和c ++ 静态函数感到困惑.
在java中,你可以从类中调用静态方法,我经常使用/看到它,例如:
public class A{
public void static b(){
System.out.println("hello");
}
}
Run Code Online (Sandbox Code Playgroud)
你能做到,A.b();
你能用C++做到吗?如果是这样,与在java中这样做相比,它不是那么受欢迎吗?