我正在使用以下算法对此Sudoku Solver进行编码:
给定一个被认为是有效的数独谜题的网格,并且存在至少1个解决方案,它将找到第一个解决方案并将其返回.
拼图存储在代表9x9插槽的2D数组中.
如果解决方案不存在,则返回拼图[0] [0] = 0的拼图,否则拼图中的所有插槽都应填充值(1-9).
该算法是一种强制递归方法:
possibleValuesInGrid()
根据当前拼图及其现有值返回可适合插槽的可能值.LinkedList
可能值中的一个值并插入到插槽中,并再次递归调用相同的方法,直到所有插槽都被填满.代码是在pastebin上托管所以我不会泛滥这个页面.我怀疑某处可能存在逻辑错误,尽管它是一种强力方法,甚至是我似乎无法想象的错误.
我已经硬编码了一些系统打印行来读取逻辑错误,但是我无法弄清楚在哪里.
另外,它如何在[8] [4]停止也很好奇.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct dict_pair {
void *key;
void *value;
struct dict_pair *tail;
} dict;
dict* NewDictionary(void) {
dict *dictionary = malloc(sizeof(dict)); //or we can malloc(sizeof(struct dict_pair))
dictionary->tail = NULL;
}
//dict operations
void put(dict *dictionary, void *key, void *value) {
//new pair
dict *new_pair = malloc(sizeof(dict));
new_pair->key = key;
new_pair->value = value;
//chaining
new_pair->tail = NULL;
dict *last_node = dictionary;
while (last_node->tail != NULL) {
last_node = last_node->tail;
}
last_node->tail = new_pair;
}
void* get(dict …
Run Code Online (Sandbox Code Playgroud) 例如这段代码:
new_log = ActivityLog(user=self.user,
activity=activity)
new_log.save()
Run Code Online (Sandbox Code Playgroud)
我可以将它链接到new_log = ActivityLog(...).save()?
我相信我尝试了上述内容,但它不起作用.有没有办法让它成为一个班轮?
我尝试使用Path.GetDirectoryName()但它不起作用.
我想要的是来自/ home/nubela/test/some_folder,我想得到"some_folder"
我怎样才能做到这一点?该方法适用于Windows/Linux(Mono)
谢谢!