思路就是找出状态转移方程
if i < 5 : dp[i] = i;
if i >= 5 and i < 11: dp[i] = min(i , dp[i-5] + 1)
if i >= 11 : dp[i] = min(min(i , dp[i-5] + 1) , dp[i-11] + 1)
代码:
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
cin >> n;
int a[n+5] = {0};
for(int i = 0;i < n+5;i ++){
if(i < 5) a[i] = i;
if(i >= 5 and i < 11) a[i] = min(i , a[i-5]+1);
if(i >= 11) a[i] = min(min(i , a[i-5]+1) , a[i-11]+1);
}
cout << a[n];
return 0;
}