c++题目求解

不会做啊啊啊啊

第1个回答  2024-03-13
用这个试试
#include <iostream>
#include <vector>
using namespace std;
const int MOD = 1000000007;
int main() {
int n;
cin >> n;
vector<long long> dp(n+1, 0);
dp[0] = 1; // 没有铺砖的情况
dp[2] = 3; // 只有2列时,有3种铺法
for (int i = 4; i <= n; i += 2) { // n 是偶数,所以以2为步长
// 直接铺满i-2列的情况
dp[i] = (dp[i-2] * 3) % MOD;
// 其他情况
for (int j = i-4; j >= 0; j -= 2) {
dp[i] = (dp[i] + (dp[j] * 2) % MOD) % MOD;
}
}
cout << dp[n] << endl;
return 0;
}