这是我2017年8月底写完的练习题,那时还什么都不会,到现在看这种题已经特别简单了。不过还是有很长一段路要走啊。(你可能发现有两个抄袭的,source直接百度就能找到了…,想了很久都没想出来,自己写又全是BUG,入门还真是不容易呀。)这是给我自己看的总结,也算是重新思考一遍算法的思想吧。
0009 零崎的人间冒险Ⅰ
题意:就是很普通的递归汉诺塔
#include <stdio.h>
int main(){
int n;
void move(int n,char a,char b,char c);
while(~scanf("%d\n",&n)){
move(n,'A','B','C');
printf("\n");
}
}
void move(int n,char a,char b,char c){
if(n==1)printf("%c to %c\n",a,c);
else{
move(n-1,a,c,b);
printf("%c to %c\n",a,c);
move(n-1,b,a,c);
}
}
0010 零崎的人间冒险Ⅱ
设刚为A,怂为B,并将之看作加长字符串,根据题意A不能连续出现,那么我们有:
①如果在长度为i的字符串str加后缀A,那么str[i-1]不等于A
②如果在长度为i的字符串str加后缀B,那么str[i-1]为任意。
故这样的字符串个数设以A为结尾的有FA个,以B为结尾的有FB个,总共F个。
FA[1]=1,FB[1]=1
FA[n]</