n 点ゲーム EOlymp - 44 動的計画法

24点ゲームは非常に古典的でシンプルなゲームで、ポーカーの山から4枚のカードを取り、それらに操作シンボルを追加し、実行中の結果が24になるようにします.これを24点ゲームと呼びます.

今は 24 を組み合わせるのではなく、与えられた数 n を組み合わせていますが、使用できる数は 1 だけであり、演算は加算、乗算、および括弧のみである必要があります。与えられた数 N に対して、完了するには少なくとも数個の 1 が必要です

データ入力

数値を入力してください N ( 1≤N≤5000)

データ出力

N に等しくなるために必要な 1 の最小数を形成できるのは正符号、乗算符号、および括弧のみであることを示す整数を出力します。

サンプル1

入力サンプル

7

出力サンプル

6

ヒント

7=(1+1)*(1+1+1)+1

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 5010;
int dp[maxn];
int main()
{
    int n;
    scanf("%d",&n);
    dp[1]=1;
    for(int i=2;i<=n;i++){
        dp[i] = dp[i-1]+1;
        for(int j=2;j*j<=i;j++){
            if(i%j==0)
            dp[i] = min(dp[i],dp[i/j]+dp[j]);
        }
    }

    printf("%d\n",dp[n]);
    return 0;
}

おすすめ

転載: blog.csdn.net/qq_33859479/article/details/87874603