题目链接:https://vjudge.net/problem/UVA-11384
这道题要分析得透:
如果我们手模的话,会发现:如果先将大于$\frac{n}{2}$的数都减去$\frac{n}{2}$是最优的,
这时候从$\frac{n}{2} +1$到$n$我们是不用考虑的,因为它们小于从$1$到$\frac{n}{2}$。
因此转移方程便是:
$f[1]=1$
$f[i]=f[i/2]+1$
AC代码:
#include<cstdio>
#include<iostream> using namespace std; int n;
int f(int x){
if(x==) return ;
return f(x/)+;
} int main(){
while(scanf("%d",&n)!=EOF){
printf("%d\n",f(n));
}
}
AC代码