我刚刚阅读了算法入门书中的广度优先搜索算法,并在纸上模拟了算法.我现在想做的是在代码中实现它以进行额外的练习.
我正在考虑从头开始实现所有数据结构(邻接列表,"颜色","距离"和"父"数组),但后来我记得当前有图形库,如Boost图库和一些Python中的其他图形API.我也尝试在UVA和Sphere Judge Online上寻找一些与BFS相关的问题,但我不知道哪个问题需要BFS解决方案.
我的问题是什么是最无痛的方法来练习这些图形算法(不仅限于BFS,但在我想实现DFS,Dijkstra,Floyd-Warshall等时也会有用).欢迎有实践问题的网站.
这是我在一些论坛上看到的面试问题.我一直试图弄清楚它是如何工作的,但我不太明白.有人可以解释它是如何工作的吗?
问:给定一个结构中成员a的指针,编写一个返回指向结构的指针的例程.
struct s
{
...
int a;
…
};
struct s *get_s_ptr(int *a_ptr)
{
// implement this.
}
Run Code Online (Sandbox Code Playgroud)
答案是:
struct s* get_s_ptr(int *a_ptr)
{
return (struct s*)((char*)a_ptr - (int)&((struct s*)0)->a);
}
Run Code Online (Sandbox Code Playgroud) 我目前有一个带有id和列的数据帧,这是一个结构数组:
root
|-- id: integer (nullable = true)
|-- lists: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- text: string (nullable = true)
| | |-- amount: double (nullable = true)
Run Code Online (Sandbox Code Playgroud)
这是一个包含数据的示例表:
id | lists
-----------
1 | [[a, 1.0], [b, 2.0]]
2 | [[c, 3.0]]
Run Code Online (Sandbox Code Playgroud)
如何将上述数据帧转换为下面的数据帧?我需要"爆炸"数组并同时附加id.
id | col1 | col2
-----------------
1 | a | 1.0
1 | b | 2.0
2 | c | 3.0
Run Code Online (Sandbox Code Playgroud)
编辑说明:
请注意,以下两个示例之间存在差异.第一个包含"一系列元素结构".而后者只包含 …
我对Web服务的工作方式比较陌生,所以我已经通过http://blog.saminda.org/2008/07/light-weight-osgi-based-axis2-powered.html 上的教程了解了这个教程. 打印你好的网络服务.
打印出你好的代码就在这里.在这里的同一个项目中,还有另一个将两个数字相加的Web服务.
要访问"hello"Web服务,我只需访问我的浏览器并转到http:// localhost:8080/bridge/services/Version/getVersion.
但是我如何为计算器网络服务做到这一点?什么是网址?或者我是否必须做一些额外的事情才能首先将其注册为服务?
我的问题类似于这个问题,但只有一个域.
是否可以在同一台服务器上运行多个docker容器,所有这些容器都在端口80上,但具有不同的URL路径?
例如:
在内部,所有应用程序都托管在同一个docker服务器上.
172.17.0.1:8080 => app1
172.17.0.2:8080 => app2
172.17.0.3:8080 => app3
Run Code Online (Sandbox Code Playgroud)
在外部,用户将使用以下URL访问应用程序:
www.mydomain.com (app1)
www.mydomain.com/app/app2 (app2)
www.mydomain.com/app/app3 (app3)
Run Code Online (Sandbox Code Playgroud) 我有一个带有静态变量"count"的递归函数.函数递增递增计数,因为它有文件范围,当我第二次调用foo()时,count仍然等于5.是否有一种技术在第二次调用foo()之前将count重置为0?
基本上,我不希望计数有文件范围,但我希望它通过不同的迭代保留其值.
我能想到的一种方法是在foo()中使用一个参数来初始化foo().比如foo(int count).但还有另一种方式吗?
#include <iostream>
using namespace std;
void foo()
{
static int count = 0;
if(count<5)
{
count++;
cout<<count<<endl;
foo();
}
else
{
cout<<"count > 5"<<endl;
}
}
int main()
{
foo(); //increment count from 0 to 5
foo(); //count is already at 5
return 0;
}
Run Code Online (Sandbox Code Playgroud) 在Java中,没有像C++那样的全局访问.那么如果他们想要创建一个可以从任何类访问的对象容器,他们会怎么做?或者说一个拥有全局值的java bean.
例如,如果我正在制作电梯模拟器,那么所有人都需要知道的字段int numElevators必须放在某个地方吗?与电梯的集合对象相同Elevators[] elevators.
我可以想到一种方法是创建一个单例类来存储所有这些全局变量.然后使用静态方法提供来自任何类的访问.但是有更优雅的解决方案吗?
我想基于通配符进行替换.例如,只有当"任期"一词出现在"="符号后面时,才将所有"任期"改为"处置".基本上是一个匹配这个的正则表达式=.*tenure
我这样做的sed命令是:
sed 's/=.*tenure/=.*disposition/g' file.txt
Run Code Online (Sandbox Code Playgroud)
但是,如果我将其传递给包含以下内容的文件:
blah blah blah = change "tenure" to "disposition"
Run Code Online (Sandbox Code Playgroud)
我明白了
blah blah blah =.*disposition" to "disposition"
Run Code Online (Sandbox Code Playgroud)
代替:
blah blah blah = change "disposition" to "disposition"
Run Code Online (Sandbox Code Playgroud)
如何进行替换,使正则表达式中的通配符不会成为目标文件的一部分?
我有一个 h:inputText 控件,我可以在其中输入最多 7 位的数字,它会将它们转换为十进制表示(即输入“9999999”,它将呈现“9999999.0”)。但是,当我输入任何 7 位或更多数字时,它会将其转换为科学记数法(即输入“10000000”并将其呈现为“1.0E7”)。
作为业务需求,我必须以十进制表示法而不是科学记数法来显示它。有没有人有办法做到这一点?
<h:inputText id="tableQuantityId"
value="#{fee.tableQuantity}"
disabled="#{!fee.selected}"
rendered="#{editable}"
validator="#{facesValidator.validateQuantity}">
<a4j:support event="onchange" reRender="messages, feePart" ajaxSingle="true"/>
</h:inputText>
Run Code Online (Sandbox Code Playgroud)
编辑:经过一些进一步的调查,它似乎是从“double”类型中获取当前格式的。(换句话说,您可以将“10000000”分配给双精度数并打印它,它会以科学计数法显示给您)。
所以我进入了我的 getTableQuantity() 方法并将其更改为:
(双版)
public double getTableQuantity() {
return tableQuantity;
}
Run Code Online (Sandbox Code Playgroud)
(到字符串表示):
public String getTableQuantityFormatted() {
double d = tableQuantity;
NumberFormat formatter = new DecimalFormat("###.#####");
String f = formatter.format(d);
return f;
}
Run Code Online (Sandbox Code Playgroud)
我在我的 xhtml 中将 "value="#{fee.tableQuantity}" 更改为 value="#{fee.tableQuantityFormatted}"
但是现在我在 xhtml 页面上收到以下错误:
数量值 10000000 不正确。/page/feeContent.xhtml @70,58 value="#{fee.tableQuantityFormatted}":属性 'tableQuantityFormatted' 在 java.lang.String 类型上不可写
我有一个.xhtml页面列表,我保存在/ src/main/webapp/pages /文件夹中.现在我想创建它们的超链接.目前唯一有效的是默认主页:/src/main/webapp/pages/default.xhtml.
<!-- Welcome page -->
<welcome-file-list>
<welcome-file>/pages/default.xhtml</welcome-file>
</welcome-file-list>
<!-- JSF mapping -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map these files with JSF -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
对于其他人,如果我有一个链接,如:
<a href="/pages/page1.xhtml">Page 1</a>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
在ExternalContext中找不到/page1.xhtml作为资源
我的问题是:如何在相对于webapp根目录的href中指定我想要的页面.