头图

本部分有点找规律的感觉,找到数学规律表达式就很容易完成这类题目,所以遇到递推不要急着写代码,先把规律找到!

有一块大小是 2 n 的墙面,现在需要用2种规格的瓷砖铺满,瓷砖规格分别是 2 1 和 2 * 2,请计算一共有多少种铺设的方法。
输入
输入的第一行包含一个正整数T(T<=20),表示一共有T组数据,接着是T行数据,每行包含一个正整数N(N<=30),表示墙面的大小是2行N列。
输出
输出一共有多少种铺设的方法,每组数据的输出占一行。
样例输入 Copy
3
2
8
12
样例输出 Copy
3
171
2731

代码示例(自己写的,只能过平台,不完美)

//#include<iostream>
//#include<algorithm>
//#include<string>
//#include<string.h>
//using namespace std;
//
//int main(){
//    int t = 0;
//    scanf("%d",&t);
//    long long a[30];
//    a[1] = 1;
//    a[2] = 3;
//    while(t--){
//        int n = 0;
//        scanf("%d",&n);
//        for(int i = 3; i <= n; i++){
//            a[i] = a[i - 1] + 2 * a[i - 2];
//        }
//        cout << a[n] << endl;
//    }
//    return 0;
//}

在一无限大的二维平面中,我们做如下假设:
1、每次只能移动一格;
2、不能向后走(假设你的目的地是“向上”,那么你可以向左走,可以向右走,也可以向上走,但是不可以向下走);
3、走过的格子立即塌陷无法再走第二次。
求走n步不同的方案数(2种走法只要有一步不一样,即被认为是不同的方案)。
输入
首先给出一个正整数C,表示有C组测试数据。
接下来的C行,每行包含一个整数n(n<=20),表示要走n步。
输出
请编程输出走n步的不同方案总数;
每组的输出占一行。
样例输入 Copy
2
1
2
样例输出 Copy
3
7

参考http://www.voidcn.com/article...

//#include<iostream>
//#include<algorithm>
//#include<string>
//#include<string.h>
//using namespace std;
//
//int main(){
//    int t = 0;
//    int a[10000];
//    a[1] = 3;
//    a[2] = 7;
//    scanf("%d",&t);
//    while(t--){
//        int n = 0;
//        scanf("%d",&n);
//        for(int i = 3; i <= n; i++){
//            a[i] = 2 * a[i - 1] + a[i - 2];
//        }
//        cout << a[n] << endl;
//    }
//    return 0;
//}

话说现在猪肉价格这么贵,小明也开始了养猪生活。说来也奇怪,他养的猪一出生第二天开始就能每天中午生一只小猪,而且生下来的竟然都是母猪。
不过光生小猪也不行,小明采用了一个很奇特的办法来管理他的养猪场:
对于每头刚出生的小猪,在它生下第二头小猪后立马被杀掉,卖到超市里。
假设在创业的第一天,小明只买了一头刚出生的小猪,请问,在第N天晚上,小明的养猪场里还存有多少头猪?
输入
测试数据的第一行是一个正整数T,代表测试数据的个数。接下来有T组测试,每组测试数据占一行,分别是一个正整数N,代表小明创业的第N天。(0<N<20)
输出
对于每组数据,请在一行里输出第N天晚上养猪场里猪的数目。
样例输入 Copy
2
2
3
样例输出 Copy
2
3

////http://www.voidcn.com/article/p-pfvdxemp-bqa.html
//#include<iostream>
//#include<algorithm>
//#include<string>
//#include<string.h>
//using namespace std;
//
//int main(){
//    int t = 0;
//    scanf("%d",&t);
//    int a[20];
//    a[1] = 1;
//    a[2] = 2;
//    while(t--){
//        int n = 0;
//        scanf("%d",&n);
//        for(int i = 3; i <= n; i++){
//            a[i] = a[i - 1] + a[i - 2];
//        }
//        cout << a[n] << endl;
//    }
//    return 0;
//}

小明最近新买了一个房间,为了给它做装修,想要给它铺上地砖。然而现有的地砖只有两种规格分别为1米1米、2米2米,由于小明买的房间有点小,宽度只有3米,长度为N米。当然这样一个房间也足够他自己一个人住了。那么如果要给这个房间铺设地砖,且只用以上这两种规格的地砖,请问有几种铺设方案。
输入
输入的第一行是一个正整数C,表示有C组测试数据。接下来C行,每行输入一个正整数n(1<=n<=30),表示房间的长度。
输出
对于每组输入,请输出铺设地砖的方案数目。
样例输入 Copy
2
2
3
样例输出 Copy
3
5

////http://www.voidcn.com/article/p-pfvdxemp-bqa.html
//#include<iostream>
//#include<algorithm>
//using namespace std;
//
//int main(){
//    int t = 0;
//    scanf("%d",&t);
//    long long a[30];
//    a[1] = 1;
//    a[2] = 3;
//    while(t--){
//        int n = 0;
//        scanf("%d",&n);
//        for(int i = 3; i <= n; i++){
//            a[i] = a[i - 1] + 2 * a[i - 2];
//        }
//        cout << a[n] << endl;
//    }
//    return 0;
//}


沐小轲
9 声望0 粉丝

C++初学者