题目简述:一排座位,每两个人中间要有两个空位,求一共有多少种座法
解题思路:
一个座位——1种
两个座位——2种
三个座位——3种
四个座位——4+1=5种
五个座位——5+2+1=8种
……
n个座位——n+a[n-3]+a[n-4]+……+a[1]种
源代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,b[46],i,j;
b[0]=0;
for (i=1;i<=3;i++)
b[i]=i;
for (i=4;i<=45;i++)
{
b[i]=i;
for (j=i-3;j>=1;j--)
b[i]=b[i]+b[j];
}
while (cin>>n)
cout<<b[n]<<endl;
return 0;
}
解题感想:把前几种情况列出来,找规律的题目。代码很短。恩……感觉都不难。。。可能是规律太好找了……
本文介绍了一种关于座位排列的算法问题,通过寻找规律实现简洁的代码解决方案。从几个基础情形出发,推导出一般性的递推公式,实现了对于任意数量座位的有效计算。

302

被折叠的 条评论
为什么被折叠?



