![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
散像
不止体力劳动能自动化,脑力劳动也能。
展开
-
循环链表与魔术师发牌C语言
循环链表魔术师的发牌问题简介:一位魔术师掏出一叠扑克牌,魔术师取出其中13张黑桃,洗好后,把牌面朝下。说:“我不看牌,只数一数就能知道每张牌是什么?”魔术师口中念一,将第一张牌翻过来看正好是A;魔术师将黑桃A放到桌上,继续数手里的余牌,第二次数1,2,将第一张牌放到这叠牌的下面,将第二张牌翻开,正好是黑桃2,也把它放在桌子上。第三次数1,2,3,前面二张牌放到这叠牌的下面,取出第三张牌,正好是黑桃3,这样依次将13张牌翻出,全部都准确无误。可以通过循环链表求出魔术师手中牌的原始排列顺序。话不多说,上原创 2021-03-18 17:29:02 · 135 阅读 · 0 评论 -
循环链表与拉丁方阵C语言
循环链表拉丁方阵拉丁方阵(英语:Latin square)是一种 n × n 的方阵,在这种 n × n 的方阵里,恰有 n 种不同的元素,每一种不同的元素在同一行或同一列里只出现一次。如图:拉丁方阵问题,可以用循环链表解决。每一行把链表遍历一次,然后指针再多走一步! 之后以指针所在位置为开头开始遍历下一行,以此类推。话不多说,上代码! #include <stdio.h>#include <stdlib.h>typedef struct node{ int d原创 2021-03-18 17:16:40 · 189 阅读 · 0 评论 -
经典算法---汉诺塔C语言
经典算法—汉诺塔经典递归例题规则:在小圆盘上不能放大圆盘,在三根柱子A、B、C之间一次只能移动一个圆盘。以此为基础,把一个由n个圆盘组成的塔从一根柱子移动到另一根柱子上。老规矩,话不多说,上代码!#include <stdio.h>int sum=0;//从底部逐层向上寻找可移动的圆盘 void hannuo(int n,char one,char two,char three){ if(n==1)//最上方的那个 { sum++; printf("第%d步:%原创 2021-03-18 16:57:30 · 224 阅读 · 0 评论 -
经典算法---八皇后C语言
经典算法—八皇后递归回溯求解 规则:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。 话不多说,上代码!#include <stdio.h>#include <stdlib.h>int sum=0;void show(int *a,int b);int check(i原创 2021-03-18 16:48:40 · 155 阅读 · 0 评论