我知道这个问题在这个论坛和互联网上的其他地方都被多次询问过.但在你用爪子伸出来攻击我之前,请耐心等待.
我是一个新手学习图.作为我的练习的一部分,我在这里给你在Graph类中添加一个方法hasCycle() http://homepage.cs.uiowa.edu/~sriram/21/fall05/ExamplePrograms/ReaderFiles/Chap13/dfs/dfs.java.
我的方法,按照此论坛中的建议执行DFS.在无向图中查找循环与在有向图中查找一个循环.
但我正在努力如何使用第一个链接中的现有dfs方法来实现它.
到目前为止,我的方法是:
public boolean hasCycle(int start)
{
vertexList[start].wasVisited = true;
for(int j = 0; j < MAX_VERTS; j++)
{
if(adjMat[start][j]==1 && vertexList[j].wasVisited==true)
return true;
else if(adjMat[start][j]==1 && vertexList[j].wasVisited==false)
{
vertexList[start].wasVisited == true;
hasCycle(j);
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我在这里遇到两个问题:首先,当我在DFSApp类中调用hasCycle()而不是使用theGraph.dfs()时,我陷入无限递归; 其次我没有使用我的作业所需的给定dfs().
任何朝向正确道路的方向都会因我在这里做错而受到赞赏.
现在我只专注于实现一个正确的单独的hasCycle()方法而不使用dfs().
我有一个 .h 文件,我打算仅将其用于存储将在我的程序中显示的所有信息字符串。在我的 info.h 中:
#ifndef __INFO_H
#define __INFO_H
char *info_msg = "This is version 1.0 of NMS.";
//all other strings used by view.c and controller.c
#endif
Run Code Online (Sandbox Code Playgroud)
然后在我的 view.h 我有如下:
//view.h
#ifndef __VIEW_H
#define __VIEW_H
#include "info.h"
//other stuff like method declaration etc.
#endif
Run Code Online (Sandbox Code Playgroud)
我的 controller.h 正在使用 view.h:
//controller.h
#ifndef __CONTROLLER_H
#define __CONTROLLER_H
#include "view.h"
#include "model.h"
//other stuff line method declaration etc.
#endif
Run Code Online (Sandbox Code Playgroud)
主文件:
#include "controller.h"
int main()
{
//stuff
}
Run Code Online (Sandbox Code Playgroud)
视图.c:
#include "view.h"
char esc,up,down,right,left;
void change_character_setting(char pesc, …Run Code Online (Sandbox Code Playgroud) 我按如下方式动态分配内存:
char* heap_start1 = (char*) malloc(1);
char* heap_start2 = (char*) malloc(1);
Run Code Online (Sandbox Code Playgroud)
当我按照以下方式做printf时,令人惊讶的是地址不是连续的.
printf("%p, %p \n",heap_start1,heap_start2);
Run Code Online (Sandbox Code Playgroud)
结果:
0x8246008, 0x8246018
Run Code Online (Sandbox Code Playgroud)
如您所见,有一个15字节的额外内存被进行碎片整理.这绝对不是因为词对齐.这种奇特的对齐背后的任何想法?
提前致谢!
如果重要的话,我在linux中使用gcc.
我想在python中定义一个嵌套字典。我尝试了以下方法:
keyword = 'MyTest' # Later I want to pull this iterating through a list
key = 'test1'
sections = dict(keyword={}) #This is clearly wrong but how do I get the string representation?
sections[keyword][key] = 'Some value'
Run Code Online (Sandbox Code Playgroud)
我可以做这个:
sections = {}
sections[keyword] = {}
Run Code Online (Sandbox Code Playgroud)
但随后在Pycharm中出现了一条警告,指出可以通过字典标签进行定义。
有人可以指出如何实现这一目标吗?
在我的代码中,我需要检查向量的两个连续成员之间的差异对是否相等,然后相应地做一些事情.现在这里有一个奇怪的事情发生在Matlab上说如果我有两对连续两个数字,所以当我使用时
(x(i+3) - x(i+2)) ~= (x(i+1)-x(i))
Run Code Online (Sandbox Code Playgroud)
1即使双方都是平等的,它也会给我一个机会.我认为原因是有一些圆整错误但不太确定.例如,
x = [0,0.16,0.32,0.48,0.64,0.80];
>>a = x(5) - x(4)
a =
0.1600
>>b = x(4) - x(3)
b =
0.1600
>>a-b
ans =
5.5511e-17
Run Code Online (Sandbox Code Playgroud)
知道怎么摆脱这个问题吗?有没有什么不同的策略绕过~=或==经营本IND的问题?
先谢谢你们.
我主要是一个Java人员,最近正在处理一些涉及C的项目,所以如果这是一个基本的C问题,请耐心等待.
所以在我的主要内部我有一个while循环,我每次迭代都声明一个变量.
int main()
{
int done = 0;
while(!done)
{
char input[1024];
scanf("%s", input);
//parse the input string
...
}
}
Run Code Online (Sandbox Code Playgroud)
现在因为输入变量每次都会改变,这取决于用户想要什么,我每次都必须使用"新"变量.但是,我认为上述声明最终会导致内存泄漏(或者会吗?).我想知道gcc是否负责垃圾收集.
在每次迭代后没有分配和释放有没有更好的方法?
我有一个外部应用程序,在数据的开头附加数据包的长度.类似下面的代码:
x = "ABCDE"
x_len = len(x)
y = "GHIJK"
y_len = len(y)
test_string = chr(x_len) + x + chr(y_len) + y
#TODO:perform base64 encoding
Run Code Online (Sandbox Code Playgroud)
在代码的客户端,我需要能够提取x_len和y_len并且可以读取x和y.
#TODO:perform base64 decoding
x_len = int(test_string[0])
x = test_string[:x_len]
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:ValueError:int()的基数为10的无效文字:'\ x05'
我假设int的参数是十六进制的,所以我在传递给int之前需要做一些解码.有人可以给我一个指针,说明从解码中使用什么功能,或者有没有更简单的方法来完成这个?
这可能是重复的,但我能找到的最接近的是比较 2 个列表,这些列表由 python 中具有唯一键的字典组成,这对我不起作用。
所以我有两个字典列表。
y = [{'a': 3, 'b': 4, 'c': 5}, {'a': 1, 'b': 2, 'c': 3}]
y = [{'a': 4, 'b': 5, 'c': 6}, {'a': 1, 'b': 2, 'c': 3}]
Run Code Online (Sandbox Code Playgroud)
我如何比较这两个列表,以便我的比较结果是两个列表的交集。我无法将其转换为设置,因为它表示不可散列类型 (dict)
我想检查int/long是否只包含一组连续的或零.例如111100000,1100000但不是101000.
我有一个基本的实现如下:
def is_consecutive(val):
count = 0
while val %2 == 0:
count += 1
val = val >> 1
return (0xFFFFFFFF >> count ) & val
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来实现这一目标?
我有一个基摘要类如下:
public Class Summary{
private String name;
private String status;
private String id;
// Getters and setters
}
Run Code Online (Sandbox Code Playgroud)
然后我扩展了这个类来获取客户摘要:
public Class CustomerSummary extends Summary{
private String lastLogin;
private String address;
// Getters and setters
}
Run Code Online (Sandbox Code Playgroud)
现在我正在调用一个 Rest 端点,它将响应映射到 Summary 对象。然后,我需要设置调用另一个休息端点的 lastLogin 和地址,并将组合数据作为 CustomerSummary 对象返回。
Summary summary = restClient.getStatus("1234");
CustomerSummary customer = new CustomerSummary()
Run Code Online (Sandbox Code Playgroud)
如何将客户对象的所有继承字段设置为与汇总对象相同?我无法进行强制转换,因为我必须向下强制转换并且会遇到 ClassCastException。
我可能有 10 个字段,因此为摘要对象的所有字段调用客户对象的设置器将导致大量重复代码。有更聪明的方法来处理这个问题吗?