zoukankan      html  css  js  c++  java
  • 睡美人

    不知不觉中,我对她的爱意已经达到了 n。

    是这样子的,第 1 分钟,我对她的爱意值是 (1,1)。假如当第 x 分钟时我对她的爱意值是 (a,b),那 么第 x + 1 分钟我对她的爱意值就是 (a + b,b) 或者 (a,a + b)。
    在关注着她的时候,我已然忘记了时间。
    现在我想知道,这时候航班已经至少起飞了多久?
    爱意为 n,也就是说 a + b = n。

    这道题有一点点变态,不是说难度,而是这个作者。步骤如下:

    (1)定义一个函数love,若当前爱意值为(a,b) ,那么开始判断a,b大小情况:

          当a>b时,这个函数返回值为love(a-b,b)+1;

          当a<b时,这个函数返回值为love(a,b-a)+1;

    (2)函数定义好后,就令i=1,不断向上枚举,计算love(i,n-i){此时i不等于n-i},直至i=n/2;

    并计算一个最小值min1=min(min,love(i,n-i));

    (3) min即为所求值。

    代码很简洁:

    #include<bits/stdc++.h>
    using namespace std;
    int min1=1000000000;
    int love(int a,int b){
    if(a==1&&b==1) return 1;
    if(a==2&&b==1) return 2;
    if(a==1&&b==2) return 2;
    if(a-b<0) return love(a,b-a)+1;
    else return love(a-b,b)+1;

    }
    int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n/2;++i)
    if(i!=n-i){
    min1=min(love(i,n-i),min1);
    }
    cout<<min1<<endl;
    return 0;
    }

    差不多是这样了,本人觉得这题并不难。

     

  • 相关阅读:
    理解MySQL——索引与优化
    Android中shape的使用
    Android之Camera控制拍照
    android的fragments管理
    android的fragment基本介绍
    android的animator
    android软键盘弹出隐藏的监听
    android平板Home键的监听
    android jsonarray
    android 应用静默自启动的解决方法
  • 原文地址:https://www.cnblogs.com/qiuheqiuji/p/11172932.html
Copyright © 2011-2022 走看看