1373: 汉诺塔
m=int(input())
def f(n,a,b,c):
if n==1:
print(a,'To',c)
else:
f(n-1,a,c,b)
print(a,'To',c)
f(n-1,b,a,c)
f(m,'A','B','C')
1374: 汉诺塔的移动次数
#include <bits/stdc++.h>
using namespace std;
int a(int n){
if(n!=1){
return a(n-1)*2+1;
}
else{
return 1;
}
}
int main(){
int n;
cin>>n;
cout<<a(n)<<endl;
}
1068: 多少头牛
#include <iostream>
using namespace std;
int f(int n){
if(n==3){
return 1;
}
if(n==2){
return 1;
}
if(n==1){
return 1;
}
return f(n-1)+f(n-3);
}
int main(){
cout<<f(20);
}
1086: 方格问题
#include<bits/stdc++.h>
using namespace std;
int a[110][110];
int f(int m,int n){
if(a[m][n]!=0)return a[m][n];
if(m==1||n==1){
return 1;
}
int s=f(m-1,n)+f(m,n-1);
a[m][n]=s;
return s;
}
int main(){
int m,n;
cin>>m>>n;
cout<<f(m,n);
}
1071: 上台阶
#include <iostream>
using namespace std;
int f(int n){
if(n==1){
return 1;
}
if(n==2){
return 2;
}
if(n>2){
return f(n-1)+f(n-2);
}
}
int main(){
cout<<f(10);
}
1389: 兔子对数
#include <iostream>
using namespace std;
int a[60];
int main(){
int n;
cin>>n;
a[1]=1;
a[2]=1;
for(int i=3;i<=n;i++){
a[i]=a[i-1]+a[i-2];
}
cout<<a[n];
}
1070: 记单词
#include<bits/stdc++.h>
using namespace std;
int f(int n){
if(n==1){
return 1;
}
return f(n-1)+n;
}
int main(){
cout<<f(10);
}
1117: 学霸题
#include<bits/stdc++.h>
using namespace std;
int a(int b)
{
int sum=0;
for(int i=1;i<=b;i++)
{
sum+=i;
}
return sum;
}
int main()
{
int n,sum=0;
cin>>n;
for(int i=1;i<=n;i++)
{
sum+=a(i);
}
cout<<sum;
return 0;
}