UVA 11384 正序數排列

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2379php

http://7xjob4.com1.z0.glb.clouddn.com/33af24c925ae62df4c094b22a2ba7e37c++

 

題意:給定1-n的數,可選多個數減去同一整數,求最小的操做次數ide

思路:保留1~n/2,剩下全減去n/2+1,得1,2...,n/2,0,1,...,(n-1)/2.等價於1~n/2,因此f(n)=f(n/2)+1。spa

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int f(int n)
 5 {
 6     if(n==1)    return 1;
 7     return f(n/2)+1;
 8 }
 9 
10 int main()
11 {
12     int n;
13     int i,j,k;
14     while(scanf("%d",&n)!=EOF)
15     {
16         printf("%d\n",f(n));
17     }
18     return 0;
19 }
View Code
相關文章
相關標籤/搜索