汉诺塔
C语言 - 汉诺塔详解(最简单的方法,进来看看就懂)_汉诺塔c语言程序详解-****博客
#include <stdio.h>
void move(char begin,char end){
printf("%c->%c\n",begin,end);
}
//begin开始杆,help辅助杆,end目的杆
void honi(int n,char begin,char help,char end){
if(n==1){
move(begin,end);
}
else{
//按照位置表示作用
//1.开始杆2.辅助杆3. 目的杆
//将上面的n-1个盘子借助目的杆(end)移动到辅助杆(help)
honi(n-1,begin,end,help);
//将最下面第n个盘子移动到目的杆
move(begin,end);
// 将现在在辅助杆子上n-1个盘子借助开始杆子移动到目的杆
honi(n-1,help,begin,end);
}
}
int main(){
int n;
scanf("%d",&n);
char a = 'A',b = 'B',c = 'C';
honi(n,a,b,c);
return 0;
}
爬楼梯
#include <stdio.h>
int stair(int n){
if(n==1){
return 1;
}
else if(n==2){
return 2;
}
return stair(n-1)+stair(n-2);
}
int main(){
int n;
scanf("%d",&n);
printf("%d",stair(n));
return 0;
}
取球问题
算法——取球问题(特殊球法)-****博客
#include <stdio.h>
int ball(int n,int m){
if(n<m){
return 0;
}
//m==0,只有一种情况:都不取
if(m==0) return 1;
if(n==m){
return 1;
}
//设置一个特殊球,一个不选这个特殊球ball(n-1,m),一个选ball(n-1,m-1)
return ball(n-1,m)+ball(n-1,m-1);
}
int main(){
int n,m;
scanf("%d %d",&n,&m);
printf("%d",ball(n,m));
return 0;
}
猴子吃桃
2、猴子吃桃问题。每天早上都吃了前一天剩下的一半零一个。_猴子吃桃子,每天吃桃子的一半零一个-****博客
#include <stdio.h>
int peach(int day,int n){
if(day>=n){
return 1;
}
return (peach(day+1,n)+1)*2;
}
int main(){
int n,day;
scanf("%d",&n);
printf("%d",peach(1,n));
return 0;
}