河内之塔是一个难题,如果你不熟悉它,它的工作原理如下:
游戏区域包括3个杆和x个盘,每个盘下一个比前一个更大.可以将这些磁盘放在杆上,这些规则如下:
最后-游戏领域STARTS是这样的:
游戏的目标是将原始"堆叠"的磁盘移动到另一根杆上,即 - 将所有磁盘放在另一根杆上,因此(再次)最大的是在底部,最小的在顶部
您的目标是使用您选择的编程语言编写程序,接受输入(如下所述)并输出解决位置所需的步骤.
一如既往,尽量让它尽可能短.
输入
输入示例:
4-3,7-6-5,2-1
Run Code Online (Sandbox Code Playgroud)
输入是一个字符串,由3个部分组成,以逗号分隔.这些部件是3根杆上每个杆上的磁盘列表.它们也是分开的,这次是连字符( - ),每个子部分都是一个数字,数字越大,磁盘越大.
所以 - 对于上面的输入,这将是一个直观的表示:
. . .
| =====|===== |
===|=== ======|====== =|=
====|==== =======|======= ==|==
ROD 1 ROD 2 ROD 3
Run Code Online (Sandbox Code Playgroud)
产量
正如您在上面的表示中所看到的那样 - 输入的最左侧部分是第一个杆,中间是第二个杆,最后一个是第3个杆.
程序的输出应如下所示:
12,23,31,12,23,13
Run Code Online (Sandbox Code Playgroud)
一个数字列表,用逗号分隔,用于定义应该取出磁盘的磁带,以及磁盘应放在的磁带上.只有3个杆,因此只有6种可能的组合(因为盘必须移动到另一个杆,而不是相同的杆):
12
13
21
23
31
32
Run Code Online (Sandbox Code Playgroud)
输入不必描述处于"原始"状态的字段 - 它可以是中间求解的.
您的程序无法生成空输出.如果输入IS处于原始状态,只需将磁盘放入不同的杆.
输入可以有一个空杆,如下所示:
2-1,3,
,,1
4-3,,2-1
Run Code Online (Sandbox Code Playgroud)
如果输入的格式不是这样,则程序可能会产生未定义的行为.因此,如果输入无效(例如较小的磁盘,丢失的磁盘,无法解决),它就可以. …
在C++中,typename需要关键字,因此编译器可以消除模板中嵌套类型和嵌套值之间的歧义.但是,在某些情况下,不存在歧义,例如派生类继承嵌套类类型时.
template <class T>
class Derived : public T::type
{ };
Run Code Online (Sandbox Code Playgroud)
这里typename关键字不是必需的,实际上甚至不允许.这是有道理的,因为上下文消除了歧义.在这里,T::type必须引用一个类型,因为你显然不能从一个值继承.
我认为同样的事情适用于函数模板参数.
template <class T>
void foo(const T::type& v)
{
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,上下文清楚地表明T::type必须引用类型,因为函数参数不能是值.然而,编译器不接受这一点.它想要const typename T::type&.这似乎不一致.为什么语言允许在继承的上下文中隐式假设嵌套类型,而不是在函数参数的上下文中?在这两种情况下都不会有歧义,为什么需要typename一个而不是另一个呢?
我有这个jquery代码:
$(document).ready(function() {
function slideSwitch() {
var $active = $('#slideShow IMG.active');
if ( $active.length == 0 ) $active = $('#slideShow IMG:last');
var $next = $active.next().length ? $active.next()
: $('#slideShow IMG:first');
$active.addClass('last-active');
$next.css({opacity: 0.0})
.addClass('active')
.animate({opacity: 1.0}, 1000, function() {
$active.removeClass('active last-active');
});
}
setInterval( "slideSwitch()", 5000 );
});
Run Code Online (Sandbox Code Playgroud)
并且它没有定义slideSwitch()的错误?有任何想法吗?
假如您执行e.printStackTrace(),则会捕获异常并在标准输出(例如,控制台)上获取以下内容:
java.io.FileNotFoundException: so.txt
at java.io.FileInputStream.<init>(FileInputStream.java)
at ExTest.readMyFile(ExTest.java:19)
at ExTest.main(ExTest.java:7)
Run Code Online (Sandbox Code Playgroud)
现在我想把它发送到一个记录器,比如log4j,以获得以下内容:
31947 [AWT-EventQueue-0] ERROR Java.io.FileNotFoundException: so.txt
32204 [AWT-EventQueue-0] ERROR at java.io.FileInputStream.<init>(FileInputStream.java)
32235 [AWT-EventQueue-0] ERROR at ExTest.readMyFile(ExTest.java:19)
32370 [AWT-EventQueue-0] ERROR at ExTest.main(ExTest.java:7)
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
try {
...
} catch (Exception e) {
final String s;
... // <-- What goes here?
log.error( s );
}
Run Code Online (Sandbox Code Playgroud) 我正在运行一个插入脚本,该脚本应该从SSMS将13,381行插入到空白数据库中.它告诉我"查询已完成但有错误"并且只插入了13357行.
错误列表中没有显示任何内容.如何找到脚本中的错误?
谢谢!
我很喜欢capistrano如何简化我的部署工作流程,但是经常推送的更改会遇到我需要登录到服务器以通过控制台进行故障排除的问题.
有没有办法使用capistrano或其他远程管理工具与本地终端上的服务器上的rails控制台进行交互?
**更新:
cap shell似乎很有前途,但是当你尝试启动控制台时它会挂起:
cap> cd /path/to/application/current
cap> pwd
** [out :: application.com] /path/to/application/current
cap> rails c production
** [out :: application.com] Loading production environment (Rails 3.0.0)
** [out :: application.com] Switch to inspect mode.
Run Code Online (Sandbox Code Playgroud)
如果你知道一个解决方法,那就太好了
为了使用cout:std :: cout << myObject,为什么我必须传递一个ostream对象?我认为这是一个隐含的参数.
ostream &operator<<(ostream &out, const myClass &o) {
out << o.fname << " " << o.lname;
return out;
}
Run Code Online (Sandbox Code Playgroud)
谢谢
我今天遇到了这段代码,同时辅导一些C语言课程的学生.该练习要求实施两项职能.第一个扫描用户的输入,第二个显示先前扫描的内容.我遇到的代码如下:
#include <stdio.h>
void myInput(int i,int n)
{
int cpt;
int tab[n];
for ( cpt=0; cpt<n; cpt++)
{
printf("Enter a number :");
scanf("%d",&i);
tab[cpt]=i;
}
}
void myDisp (int n)
{
int tab[n];
int cpt;
for ( cpt=0; cpt <n; cpt++)
{
printf("%d ", tab[cpt]);
}
}
int main()
{
int n; int i;
printf(" Entrer the numbers of elements you want: \n");
scanf("%d \n",&n);
int tab[n];
myInput(i,n);
myDisp(n);
}
Run Code Online (Sandbox Code Playgroud)
虽然这段代码充满了不一致,但它实际上在gcc 4.4.3下工作:它显示已经输入的数字!!!!!! 有谁知道这些代码是如何工作的?
非常感谢
我正在开发一个PHP应用程序来管理公司的订单.要查看URL当前的订单/orders/view/3502.
我不希望订单ID号出现在URL中,因此我使用CodeIgniter的加密库来加密URL中的ID.URL(加密后)看起来像/orders/view/AaffGdQQ.
我遇到的问题有时加密ID包含正斜杠或加号,在URL中无法正常工作.CodeIgniter基于斜杠读取URL,因此,如果加密的ID有斜杠,它将读取为2个变量,而不是一个.此外,加号会被解释为URL中的空格.
所以,我的问题是,如何加密ID并确保字符串不包含加号或斜杠?
编辑:我有一个想法,看看加密的ID是否包含斜杠或加号,如果是,则再次加密.出于某种原因,每次ID被加密时,它都是不同的,所以这会起作用.
我们的日志报告ThreadAbortException是以看似随机的间隔停止我们的Quartz.NET作业.根据我的理解,这通常不会由线程本身正在做的事情引起(例如从FTP服务器读取文件,或执行LINQ to Entities查询),而是因为某些外部进程告诉线程停止.此外,创建日志的方式使我相信当我们收到这些错误时,整个Web应用程序正在重新启动,因此我猜测重启过程是导致线程首先被中止的原因.
所以我的问题是:我怎样才能找出服务器/应用程序重启的原因?是否有某些日志会在每次重启时向我提供详细信息?我应该调查这样的事情的常见原因吗?
在此先感谢您的帮助.
编辑
我刚刚与一些同事进行了讨论,听起来IIS会在一段时间不活动后自动将应用程序置于休眠状态,这可能是问题的一部分.通过一些研究,我发现了IIS中工作线程的"空闲超时"设置.我认为当应用程序在一段时间内没有处理任何请求时,它会发出一个shutdown命令.出于某种原因,Quartz不会立即关闭,而是等待下一个作业被触发,然后系统检测到该作业的线程并在尝试运行时将其杀死.
因此,当系统想要关闭时,我想我们需要想出一些方法来优雅地完成任何正在运行的作业,并且如果没有运行任何作业,Quartz实际上会关闭它.有没有人有这种问题的经验?
c++ ×2
asp.net ×1
c ×1
capistrano ×1
code-golf ×1
codeigniter ×1
console ×1
iis-7.5 ×1
java ×1
jquery ×1
log4j ×1
logging ×1
mcrypt ×1
ostream ×1
overloading ×1
php ×1
sql ×1
sql-server ×1
stack-trace ×1
templates ×1
typename ×1