用c++写代码问题 F: 铺设走廊 现有一个长n米(n<90)、宽2米的走廊,师傅用1米*2米的地砖铺设走廊,任何时候不能切断地砖,请问恰好铺设完毕,有多少种铺设方法。 输入 一行,若干个整数(个数<100,整数<=91)输出 输出m个整数(结果),由空格隔开。 样例输入 Copy 2 3 10 样例输出 Copy 2 3 89
时间: 2024-04-16 15:27:20 浏览: 202
你可以使用动态规划来解决这个问题。我们一个数组dp,其中dp[i]表示长度为i米的走廊有多少种铺设方法。
初始化dp数组为0,然后设置dp[0] = 1,表示长度为0米的走廊只有一种铺设方法,即不铺砖。
然后,我们从1开始遍历到n,对于每个长度i,我们可以选择铺一块1米长的地砖,或者铺两块2米长的地砖。
如果选择铺一块1米长的地砖,那么剩下的长度为i-1米,所以有dp[i-1]种铺设方法。
如果选择铺两块2米长的地砖,那么剩下的长度为i-2米,所以有dp[i-2]种铺设方法。
所以,dp[i] = dp[i-1] + dp[i-2]。
最后,输出dp[n]即可。
下面是一个使用C++实现的示例代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> dp(100, 0);
dp[0] = 1;
int n;
while (cin >> n) {
for (int i = 1; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
cout << dp[n] << " ";
}
return 0;
}
```
你可以输入多组测试数据,程序会依次输出每组数据的结果。
阅读全文