我试图将Python程序转换为C++,因为我对Python的理解稍微好一点。然而,翻译出来的代码并不起作用。有人能帮我一下吗?我试图用C++制作一个数独板,但它在board
中返回一些值,而不是其他位置。加上它们是无效的,并包含0。
这个程序的输出是一个二维数组,所有值都不在0,并且对数独板有效:
import random
def coutb(board):
for i in range(9):
print(board[i])
def make_board(m=3):
n = m**2
board = [[None for k in range(n)] for k in range(n)]
board
是一个长度为9的二维数组,在每个位置都有9个列出的语句。在这里,它们都被初始化为none
。
def search(c=0):
"Recursively search for a solution starting at position c."
i, j = c//n, c%n
i0, j0 = i - i % m, j - j % m
numbers = list(range(1, n + 1))
random.shuffle(numbers)
for x in numbers:
if (x not in board[i]
and all(row[j] != x for row in board)
and all(x not in row[j0:j0+m] for row in board[i0:i])):
board[i][j] = x
if c + 1 >= n**2 or search(c + 1):
coutb(board)
print ('\n')
return board
else:
board[i][j] = None
return None
return search()
coutb(make_board())
这个程序的输出也是一个二维数组,但是里面的值并不是每次都valid
。因为在Python中,它总是一个有效的板。
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int board[9][9];
void PrintBoard(){
for (int i=0; i<9; i++) {
for (int j=0;j<9;j++){
cout << board[i][j] << " ";
}
cout << endl;
}
}
这三个检查每个发现的数字的有效性水平,垂直和通过网格。
bool hor(int x,int target){
for (int i=0;i<9;i++){
if (board[x][i]== target)
return false;
}
return true;
}
bool ver(int y, int target){
for (int i=0;i<9;i++){
if (board[i][y]== target)
return false;
}
return true;
}
bool grid(int x, int y,int target){
for (int i=0;i<3;i++){
for (int j=0;j<3;j++){
if (board[x-x%3+i][y-y%3+j]==target)
return false;
}
}
return true;
}
我正在苦苦挣扎的地方是:
int search(int c){
int row = c/9, col= c%9;
int num[9] = {1,2,3,4,5,6,7,8,9};
srand(time(NULL));
for (int x=0;x<9;x++){
int temp = num[x];
int k = rand() % 9;
num[x] = num[k];
num[k] = temp;
}
for (int x=8;x>=0;x--){
if (hor(row,num[x]) && ver(col,num[x]) && grid(row,col,num[x]) )
return num[x];}
if (c+1>80 || search(c+1))
return 1;
else
return 0;
}
int make_board(int m){
int n = m*m;
return(search(n));
}
int main(){
for (int i=0;i<9;i++){
for (int j=0;j<9;j++){
board[i][j] = 0;
}
}
int c=80;
while (c>=0){
int i = c/9, j = c%9;
board[i][j] = search(c);
c--;
}
PrintBoard();
return 0;
}
在Python中,def函数不需要我们定义它的用法,但在C++中有。
我怀疑问题出在C++主函数make_board()
上,因为我以前在主函数while循环中用(I*3)
编译过它,它可以生成板的第一行。
我认为有一些不同的API您可以选择将您的代码翻译成另一种语言。
问题内容: 我在使用Python将XML文件转换为CSV时遇到很多麻烦。我看过很多论坛,都尝试过lxml和xmlutils.xml2csv,但是我无法使其正常工作。这是来自Garmin GPS设备的GPS数据。 这是我的XML文件的样子,当然是缩短了: 我的大型XML文件中有几个trk标记,但我可以设法将它们分开-它们代表GPS设备上的不同“段”或行程。我想要的只是一个CSV文件,它绘制了以下内容
我正在尝试将curl中的以下工作请求转换为python请求(使用请求http://docs.python-requests.org/en/v0.10.7/). (请注意,我使用了一个假url,但该命令确实适用于真实url) 接收端(在烧瓶中运行)执行以下操作: 在curl(7.30)中,在Mac OS X(10.9)上运行,上面的命令正确返回使用标记查询过滤的json列表。 我的python脚本如
问题内容: 我如何转换defaultdict 成为普通命令? 问题答案: 您可以简单地致电: 但请记住,defaultdict 是 一个dict: 只是稍有不同的行为,因为当您试图访问一个缺少关键-这通常会提高一个-在被称为改为: 这就是您在字典的数据端出现之前看到的内容。 因此,在不实际制作新对象的情况下恢复更多类似dict的行为的另一个技巧是重置: 但这在大多数情况下都不值得。
我一直在我的开发服务器中使用模块来轻松地从转换为: 但是,我在生产服务器中部署了我的应用程序,但我没有安装Excel应用程序,因此引发了以下错误: 在Python中,从转换为有什么好的替代方法吗? 我已经用PDFWriter测试了xtopdf,但是使用这个解决方案,您需要逐个读取和迭代范围并写入行。我想知道是否有一个更直接的解决方案类似于win32com。客户 谢谢
我正在制作一个奥赛罗播放器,实现了一个带有alpha-beta剪枝的极大极小算法。然后,我在网上对最好的算法做了一些研究,并不断听到他们都使用的“negamax”算法。好像大部分人都觉得negamax比minimax快(我觉得是因为它不在min和max播放器之间切换?),所以我想把我的minimax算法变成negamax,如果那不是太难的话。 我想知道人们是否有任何洞察力,有多少更快地使用Niga
问题内容: 我有一个时间序列。我提取了索引,并希望将它们分别转换为。您如何去做?我尝试使用,但使用后检查时无法转换 问题答案: 只需尝试to_datetime() 更改类型 更新 谢谢@mjp,以后会弃用,请改用!