题意:输入n,表示有1~n个数,任意选定一个数number,则可以将所有大于等于该数的所有数减去number,问最小需要多少步能将所有数减为0.
思路:找规律。比如n=5.1,2,3,4,5 都减去3以后为{1,2,0,1,2},这时候就相当于求n=2时的最小步数。即f(5) = f(2) + 1.
#include<stdio.h>
int dfs(int n)
{
if(n == 0)
return 0;
else
return 1+dfs(n/2);
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
printf("%d\n",dfs(n));
}
return 0;
}