2
N-皇后马奎因
众所周知的N皇后问题有一个变体,其中涉及皇后和骑士,并且据说“难度更大” 1。问题陈述如下: 您必须在棋chess上放置相等数量的骑士♞和皇后♛,以使任何棋子都不会攻击其他棋子。您可以在板上放置的最大块数是多少,可以用几种不同的方法来做? 在此代码高尔夫球挑战中,将为您提供3到32之间的输入n(以最适合您的语言的方式)。对于给定的n,上述问题可能有零个或更多个解决方案。如果没有解决方案,则必须不输出/返回任何内容(nil,空字符串,false,...)。否则,您必须给出两个结果: 尺寸为n的解决方案板(请参阅下文),在没有任何棋子受到攻击的情况下无法添加皇后或骑士棋子。皇后和骑士人数相等。 要运行的程序的源,该程序不接受任何输入,并且以相同的格式给出(i)具有相同大小n的另一个解决方案(或不提供任何东西),以及(ii)用于下一个解决方案的另一个程序(依此类推) ...)。 注意: 程序序列必须永远不会返回同一块板两次,必须涵盖大小为n的问题的所有可能解决方案,并最终必须终止(不产生输出)。 您可以返回两个值,返回一个并打印另一个值,或者打印两个返回值。 但是,如果您同时打印电路板和下一个程序,则不能将电路板视为下一个程序的一部分(建议您在注释中打印电路板,或者同时使用标准输出和错误流)。 程序的返回值必须是字符串,而不是闭包。 板格式 一块木板是大小为n的正方形。 棋盘格可以是空的,皇后或骑士。 您必须为每种单元格选择不同的值(即,在印刷电路板时可以使用Q,N以外的其他符号)。 如果返回一个非字符串板,则它必须是该板的n 2个值的有序集合(例如,矩阵,向量或以行/列为主的列表,...)。 如果要打印板,则可以将其打印为正方形或线条。例如,可以按以下方式打印大小为4的解决方案板(不需要空格;可以根据需要选择符号): Q - - - - - - - - - - - - - N - 如果有这种感觉,您还可以输出: ♛ · · · · · · · · · · · · · …