Fighting_小银考呀考不过四级(递推) SDUT3460

版权声明:本人原创文章若需转载请标明出处和作者!沙 https://blog.csdn.net/weixin_44143702/article/details/87607869

Fighting_小银考呀考不过四级

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

四级考试已经过去好几个星期了,但是小银还是对自己的英语水平担心不已。
小银打算好好学习英语,争取下次四级考试和小学弟小学妹一起拿下它!
四级考试的时候,监考老师会按考号分配固定的座位,但唯一不变的是每两个人之间肯定至少会留下两个空座位,原因相信大家都懂得。
那么问题来了,我们现在只关注教室里的一排座位,假设每排有n个座位,小银想知道这一排至少坐一个人的前提下,一共有多少种坐法

Input

多组输入。

第一行输入整数n,代表教室里这一排的座位数目。(1 <= n <= 45)

Output

输出种类数目。输入输出各占一行,保证数据合法。

Sample Input

1
3
5

Sample Output

1
3
8

解题思路

我们用 f[n] 表示有n个座位,且至少坐一个人的坐法种类数。

则 f[n] 与两种情况有关:

1. 第 n 个座位不坐人,此时的坐法与只有 n-1 个座位是等价的,即 f[n-1];

2. 第 n 个座位坐人,此时第 n-1 和第 n-2 个座位都无法再坐人,所以此时与只有 n-3 个座位的情况是等价的,即 f[n-3]。另外,由于第 n 个座位已经坐了人,所以前面 n-3 个座位中是可以不坐人的,而 f[n-3] 仅能表示有 n-3 个座位且至少坐一人的情况,所以我们还需要把前面都不坐人的这种情况补上,即 f[n-3]+1。

综上,我们可以得到递推式:f[n] = f[n-1] + f[n-3] + 1。
--------------------- 
作者:Dreamer_bLue 
来源:CSDN 
原文:https://blog.csdn.net/dreamer_blue/article/details/52607359 
版权声明:本文为博主原创文章,转载请附上博文链接!

我们现在只关注教室里的一排座位,假设每排有 n 个座位至少坐一个人的前提下,一共有多少种坐法?

假设有 m 个人,则  1 <= m <= n

正确代码: 

#include <stdio.h>
#include <stdlib.h>
/*   我们现在只关注教室里的一排座位
假设每排有 n 个座位至少坐一个人的前提下
一共有多少种坐法
假设有 m 个人,则  1 <= m <= n   */
int f[46];
int main()
{
    int n, i;
    f[1] = 1;
    f[2] = 2;
    f[3] = 3;
    for(i = 4; i <= 45; i++)
    {
        f[i] = f[i - 1] + f[i - 3] + 1;
    }
    while(~scanf("%d", &n))
    {
        printf("%d\n", f[n]);
    }
    return 0;
}

之前的错误思路:

以为人可以互相换位置,但实际上题目说明了 “监考老师会按考号分配固定的座位” ,所以考生坐的顺序是不能变的!

错误代码:

#include <stdio.h>
#include <stdlib.h>
/*   我们现在只关注教室里的一排座位
假设每排有 n 个座位至少坐一个人的前提下
一共有多少种坐法
假设有 m 个人,则  1 <= m <= n   */
int f[46];
int main()
{
    int n, i;
    f[1] = 1;
    f[2] = 2;
    f[3] = 3;
    f[4] = 4 + 2;///四个座位时可以坐一个人(4种)或两个人(2种)
    f[5] = 5 + 3 * 2;/**五个同样可以坐一或两个人,分别为5种和6种,
    人数为2时,两人可以交换位置**/
    f[6] = 6 + 6 * 2;/**六个座位仍可以坐一或两个人,分别为5种和6种
    人数为2时,两人可以交换位置**/
/* 人数规律: 每增加三个座位,可以增加一个人坐
   座位数 n 为 3 的倍数时:可以坐的人数 = n / 3
   座位数 n 不为 3 的倍数时:可以做的人数 = (n / 3) + 1
*/
    while(~scanf("%d", &n))
    {
        
    }
    return 0;
}

其他人的解答:

1. https://blog.csdn.net/qq_32426313/article/details/54346610

2. https://blog.csdn.net/dreamer_blue/article/details/52607359

猜你喜欢

转载自blog.csdn.net/weixin_44143702/article/details/87607869