每日编程一小时(第十天)

一.问题描述

5本新书借给3人,没人最多借一本,有多少种借法

二.设计思路

1.采用枚举的方法列出所有的选择情况

2.利用判定条件删去不符合条件的情况,剩下的全部为符合条件的情况

三.流程图

 

四.代码实现

#include<iostream>
using namespace std;
int main()
{
    int A, B, C,flag=0;
    for(A=1;A<=5;A++)
        for(B=1;B<=5;B++)
            if(A!=B)
            for (C = 1; C <= 5; C++)
            {
                if (A != C && B != C)
                {
                    cout << "A:" << A << " B:" << B << " C:" << C<<"  ";
                    flag++;
                    if (flag % 4 == 0)
                        cout << endl;
                }
            }

    cout << "一共有" << flag << "种方法";
}

 

一.问题示例

求出Fibonacci级数

二.设计思路

1.输入一个数n

2.创建一个递归函数,当n<=2时fn=1,否则函数中fn=f(n-1)+f(n-2)

3.输出fn

也可以创建一个数组求解

三.流程图

 

四.代码实现

1.递归法

#include<iostream>
using namespace std;
int f(int n)
{
    int fn;
    if (n > 0 && n <= 2)
        fn = 1;
    else fn = f(n - 1) + f(n - 2);
    return fn;
}
int main()
{
    int n,fn;
    cin >> n;
    cout << f(n);

}

2.数组法

#include<iostream>
using namespace std;
int main()
{
    int n;
    cin >> n;
    int f[10086];
    for (int i = 0; i < n; i++)
    {
        if (i < 2)
            f[i] = 1;
        else f[i] = f[i - 1] + f[i - 2];
    }
    cout << f[n - 1];
}

 

posted @ 2023-04-19 09:21  伐木工熊大  阅读(21)  评论(0)    收藏  举报