0
点赞
收藏
分享

微信扫一扫

《算法笔记知识点记录》第四章——算法初步3——递归

进击的铁雾 2022-04-13 阅读 105

请添加图片描述

☘前言☘

最近发现自己还是太菜了,所以计划刷一遍算法笔记。 最近的计划是花两个月的时间,在回所之前把算法笔记刷完,不知道能不能实现了了,希望大家监督我,最近疫情好严重,被封校了,大家也要注意安全呀。


文章目录


👻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,大佬们刷完打个卡
大家加油冲!!!!

举报

相关推荐

0 条评论