关于c++:递推专题BE-贴瓷砖-BF-统计方案BG-小明养猪的故事BH-小明的烦恼

62次阅读

共计 2326 个字符,预计需要花费 6 分钟才能阅读完成。

本局部有点找法则的感觉,找到数学法则表达式就很容易实现这类题目,所以遇到递推不要急着写代码,先把法则找到!

有一块大小是 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;
//}

正文完
 0