xtu oj 1331 密码

 题目还是不复制了,自己去看

这道题是一道典型的递推,类似动态规划了

思路:类似前缀和先预处理了,然后再直接求值,核心是递推公式的获得,解决了这个问题就不大了;

我的AC代码思路还是一眼就可以看出来的,不废话,直接上代码

#include
using namespace std;
#define ll long long
ll ans[46] = {0}, dp[46][5] = {0};
int main() {
	int t;
	cin >> t;
	ans[1] = 4;
	dp[1][1] = 1;
	dp[1][2] = 1;
	dp[1][3] = 1;
	dp[1][4] = 1;
	int i;
	for (i = 2; i < 46; i++) {
		dp[i][1] = dp[i - 1][2] + dp[i - 1][3];
		dp[i][2] = dp[i - 1][1] + dp[i - 1][3] + dp[i - 1][4];
		dp[i][3] = dp[i - 1][1] + dp[i - 1][2] + dp[i - 1][4];
		dp[i][4] = dp[i - 1][2] + dp[i - 1][3];
		ans[i] += dp[i][1] + dp[i][2] + dp[i][3] + dp[i][4];
	}
	while (t--) {
		int n;
		cin >> n;
		cout << ans[n] << endl;
	}
	return 0;
}

你可能感兴趣的:(XTU,OJ,算法,c++,动态规划)