書いてあることをそのまま実装するだけの実装ゲームです。
漸化式で一発です。
#include<stdio.h>
#include<string.h>
#include<iostream>
int main(){
__int64 dp[31][3][2];
memset(dp,0,sizeof(dp));
dp[0][0][0]=1;
for(int i=1;i<=30;i++){
int p=i-1;
dp[i][2][0]+=dp[p][1][0];//休み
dp[i][2][1]+=dp[p][1][1];//休み
dp[i][1][0]+=dp[p][0][0];//休み
dp[i][1][1]+=dp[p][0][1];//休み
dp[i][0][0]+=dp[p][0][0]+dp[p][1][0]+dp[p][2][0];//出席
dp[i][0][1]+=dp[p][0][1]+dp[p][1][1]+dp[p][2][1];//出席
dp[i][0][1]+=dp[p][2][0];//遅刻
dp[i][0][1]+=dp[p][1][0];//遅刻
dp[i][0][1]+=dp[p][0][0];//遅刻
}
std::cout<<dp[30][0][0]+dp[30][1][0]+dp[30][2][0]+dp[30][0][1]+dp[30][1][1]+dp[30][2][1]<<"\n";
}
最終更新:2016年01月23日 00:31