☘前言☘
最近发现自己还是太菜了,所以计划刷一遍算法笔记。 最近的计划是花两个月的时间,在回所之前把算法笔记刷完,不知道能不能实现了了,希望大家监督我,最近疫情好严重,被封校了,大家也要注意安全呀。 |
文章目录
👻1.分治
😶🌫️2.递归
int P[10],hashTable[11];
const char *s = ".........";
void generateP(int index,int n, int* returnSize, int** returnColumnSizes,char *** ans){
if(index == n){
ans [*returnSize] = malloc(sizeof(char *) * n);
for(int i = 0;i < n;++i){
ans[*returnSize][i] = malloc(sizeof(char) * (n + 1));
strncpy(ans[*returnSize][i],s,n);
ans[*returnSize][i][n] = '\0';
ans[*returnSize][i][P[i]] = 'Q';
}
(*returnColumnSizes)[*returnSize] = n;
++(*returnSize);
return;
}
for(int x =0; x< n;x++){
if(hashTable[x] == false){
bool flag = true;
for(int pre = 0; pre < index;++pre){
if(abs(index - pre) == abs(x - P[pre])){
flag = false;
break;
}
}
if(flag){ //回溯法
P[index] = x;
hashTable[x] = true;
generateP(index + 1,n,returnSize,returnColumnSizes,ans);
hashTable[x] = false;
}
}
}
}
char *** solveNQueens(int n, int* returnSize, int** returnColumnSizes){
memset(hashTable, 0, sizeof(hashTable)); //全局变量初始化
char *** ans = malloc(sizeof(char **) * 10000);//返回的结果
(*returnColumnSizes) = malloc(sizeof(int) * 10000);
(*returnSize) = 0;
generateP(0,n,returnSize,returnColumnSizes,ans);
return ans;
}
Ohhhhhhhhh~,过啦,哈哈哈哈。算是比较难的了。三级指针要命,建议回头用c艹写。。。
推荐专栏
🐳课后习题
我写完会放题解,大家写完了可以在评论区打卡哟!题解我放评论区吧,这样不用修改文章。
题目 | 相同题目 | 难度 |
---|---|---|
《算法笔记》4.3小节——算法初步->递归 | ⭐⭐ |
题解:评论区见,置顶没有就是我没写完0.0,大佬们刷完打个卡
大家加油冲!!!!