メモ化再帰 int dp[50][50]; int f(int index, int a){ if(index == k){ return 1; } if(dp[index][a] != -1){ return dp[index][a]; } int ret = 0; for(int i = 0; i < n; i++){ } dp[index][a] = ret; return ret; } memset(dp, -1, sizeof(dp)); f(0, 0);