C++ 約瑟夫問題

#include <iostream>
using namespace std;
int dp[100];
int f(int n, int k){
    if(dp[n] != 0) return dp[n];
    int a = f(n-1, k)+k;
    while(a>n) a-=n;
    dp[n] = a;
    return dp[n];
}
int main(){
    int n, k;
    cin >> n >> k;
    dp[1] = 1;
    cout << f(n, k) << '\n';
}
發佈留言

發佈留言必須填寫的電子郵件地址不會公開。