我正在寻找一种快速的方法/算法来查找图中哪些节点是关键的.
例如,在此图中:

节点号2和5是关键的.
我目前的方法是尝试一次从图中删除一个非端点节点,然后检查是否可以从所有其他节点到达整个网络.这种方法显然效率不高.
有什么更好的方法?
在c ++中我们可以写:
#include <iostream>
class Base1
{
public: void test() { std::cout << "Base 1" << std::endl; }
};
class Base2
{
public: void test() { std::cout << "Base 2" << std::endl; }
};
template<class T>
class Derived: public T
{
};
int main()
{
Derived<Base1> d1;
Derived<Base2> d2;
d1.test();
d2.test();
}
Run Code Online (Sandbox Code Playgroud)
获得模板继承.
可以使用泛型在java中完成相同的操作吗?
谢谢.
编辑:添加有关我的意图的更多信息
在我的场景中,我有两个子类,Sprite和AnimatedSprite(它是Sprite的子类).下一步是PhysicalSprite,它为精灵添加物理,但我希望它能够从Sprite和AnimatedSprite继承.
我在使用装饰器模式的我的类中遇到了问题.
当内部对象在调用其他对象时使用"this"引用时,会出现问题.这会导致来自接收"this"引用的对象的所有调用直接发送到内部对象,而不会通过外部第一个.
解决这个问题的常用方法是什么?
谢谢.
我正在计划开发一个Android应用程序,需要后端服务器与应用程序的其他用户同步数据.我打算在unix服务器上运行的标准java中编写这个服务器.
我曾经直接在两个Android设备之间做过这个,在这种情况下,我只是序列化了两端需要发送的所有数据.
但是我怀疑Dalvik序列化的格式与Java SE的格式不兼容.是这样的吗?如果是的话,我的替代方案是什么?我想到的一件事是将原始xml发送到套接字上,但如果有更好的选择,我会很高兴听到它们.
谢谢.
我正在弄乱Python中的范围,并发现了一些我觉得很奇怪的东西:
g = 5
def foo(a):
if a:
global g
g = 10
else:
g = 20
print("global g: ",g)
foo(False)
print("global g: ",g) # 20?! What?
foo(True)
print("global g: ",g)
Run Code Online (Sandbox Code Playgroud)
我相信第二次打印应该是"5",因为全局声明从未执行过,但很明显,输出为20(!).
这背后的逻辑是什么?
我有一个本机的非托管 C++ 库,我想将它包装在托管 C++ 类中,以提供干净且类型安全的方式来从 C# 访问非托管类,而无需执行 PInvoke。
我试图包装的方法之一具有以下签名:
void Unmanaged::login(
const std::wstring& email,
const std::wstring& password,
std::function<void()> on_success,
std::function<void(int, const std::wstring&)> on_error);
Run Code Online (Sandbox Code Playgroud)
然而,试图解决这个问题并不容易。显而易见的方法:
public delegate void LoginSuccess();
public delegate void LoginFailed(int, String^);
void Wrapper::login(String ^ email, String ^ password, LoginSuccess ^ onSuccess, LoginFailed ^ onError)
{
unmanaged->login(convert_to_unmanaged_string(email), convert_to_unmanaged_string(password), [onSuccess]() {onSuccess(); }, [](int code, const std::wstring& msg) {onError(code,convert_to_managed_string(msg))});
}
Run Code Online (Sandbox Code Playgroud)
失败,因为托管 C++ 不允许(本地)lambda(在成员中)。
我知道我可以使用 Marshal::GetFunctionPointerForDelegate 来获取指向委托的本机指针,但我仍然需要提供一个“中间件”来在托管/非托管类型(例如 std::wstring)之间进行转换。
也许有比完全使用托管 C++ 更好的方法?
我正在开发一款Android游戏.
我添加了按钮,允许用户在x轴上导航相机并放大和缩小.
为此,我使用以下矩阵代码:
// c is the canvas..
Matrix m = c.getMatrix();
// Make sure that the ground is always at the bottom of the screen
m.setScale(zoom,zoom,0.0f,height);
m.preTranslate(camera_x, 0); // Change offset in x-direction
c.setMatrix(m);
Run Code Online (Sandbox Code Playgroud)
这适用于模拟器,但在我的真实设备上给了我一些奇怪的结果.
谁能告诉我它有什么问题?我发现使用矩阵很棘手,特别是因为Matrix对象有许多选项(pre,post和set).
谢谢
我正在尝试围绕 F# 中的 mon-、err、工作流进行思考,虽然我认为我对基本的“可能”工作流有相当深入的了解,但尝试实现状态工作流来生成随机数确实让我受益匪浅难倒。
我未完成的尝试可以在这里看到:
let randomInt state =
let random = System.Random(state)
// Generate random number and a new state as well
random.Next(0,1000), random.Next()
type RandomWF (initState) =
member this.Bind(rnd,rest) =
let value, newState = rnd initState
// How to feed "newState" into "rest"??
value |> rest
member this.Return a = a // Should I maybe feed "initState" into the computation here?
RandomWF(0) {
let! a = randomInt
let! b = randomInt
let! c = randomInt
return [a; b; …Run Code Online (Sandbox Code Playgroud) 有人可以解释这些结果是如何可能的(python 2.6):
>>> 1<3>2
True
>>> (1<3)>2
False
>>> 1<(3>2)
False
Run Code Online (Sandbox Code Playgroud)
我认为最后两个中的一个与第一个匹配,但显然第一个语句中的运算符是以某种方式链接的?!