C语言经典算法大全
C语言经典算法大全老掉牙
河内塔
费式数列
巴斯卡三角形
三棋
老鼠走迷官一
老鼠走迷官二
骑士走棋盘
八个皇后
八枚银币
生命游戏
字串核对
双三河内塔
背包问题Knapsack Problem
数运算
蒙地卡罗法求 PI
Eratosthenes筛选求质数
超长整数运算大数运算
长 PI
最大公因数最小公倍数因式分解完美数
阿姆斯壮数
最大访客数
中序式转后序式前序式
后序式的运算
关于赌博
洗扑克牌乱数排列
Craps赌博游戏
约瑟夫问题Josephus Problem 集合问题
排列组合
格雷码Gray Code
产生可能的集合
m元素集合的n个元素子集
数字拆解
排序
得分排行
c语言算法书籍选择插入气泡排序
Shell 排序法 - 改良的插入排序Shaker 排序法 - 改良的气泡排序
Heap 排序法 - 改良的选择排序
快速排序法一
快速排序法二
快速排序法三
合并排序法
基数排序法
搜寻
循序搜寻法使用卫兵
二分搜寻法搜寻原则的代表
插补搜寻法
费氏搜寻法
矩阵
稀疏矩阵
多维矩阵转一维矩阵
上三角下三角对称矩阵
奇数魔方阵
4N 魔方阵
2 2N1 魔方阵 1河内之塔
说明河内之塔 Towers of Hanoi 是法国人MClaus Lucas 于1883年从泰国带至法国的河内为越战时北越的首都即现在的胡志明市1883年法国数学家 Edouard Lucas曾提及这个故事据说创世纪时Benares有一座波罗教塔是由三支钻石棒Pag所支撑开始时神在第一
根棒上放置64个由上至下依由小至大排列的金盘Disc并命令僧侣将所有的金盘从第一根石棒移至第三根石棒且搬运过程中遵守大盘子在小盘子之下的原则若每日仅搬一个盘子则当盘子全数搬运完毕之时此塔将毁损而也就是世界末日来临之时
解法如果柱子标为ABC要由A搬至C在只有一个盘子时就将它直接搬至C当有两个盘子就将B当作辅助柱如果盘数超过2个将第三个以下的盘子遮起来就很简单了每次处理两个盘子也就是A- BA - CB- C这三个步骤而被遮住的部份其实就是进入程式的递回处理事实上若有n个盘子则移动完毕所需之次数为2n - 1所以当盘数为64时则所需次数为264- 1 1XXXXXXXXXX709551615为505390248594782e16年也就是约5000世纪如果对这数字没什幺概念就假设每秒钟搬一个盘子好了也要约5850亿年左右
include
void hanoi int n char A char B char C
if n 1
printf "Move sheet d from c to c\n" n A C
else
hanoi n-1 A C B
printf "Move sheet d from c to c\n" n A C
hanoi n-1 B A C
int main
int n
printf "请输入盘数"
scanf "d" n
hanoi n A B C
fn fn-1 fn-2 if n 1
fn n if n 0 1
include
include define N 20 int main void
int Fib[N] 0
int i Fib[0] 0
Fib[1] 1 for i 2 i N i
Fib[i] Fib[i-1] Fib[i-2] for i 0 i N i printf "d " Fib[i]
printf "\n"
return 0
3 巴斯卡三角形 include
define N 12
long combi int n int r
int i
long p 1
for i 1 i r i
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论