• 未名湖边的烦恼问题


    http://blog.csdn.net/f_zyj/article/details/50358965

    //在以上的博客看到的,博主把我的疑问都解答了!

     

    分析:因为排在第一个永远只能是还鞋的人,那么代码的实现上会比较别扭。我们换成从最后一位开始,那么就没有这个问题了。

      

    #include <stdio.h>
    int FangAn(int m,int n);
    
    int main(int argc, const char * argv[])
    {
        int m=0,n=0,s=0;
        scanf("%d%d",&m,&n);
        s=FangAn(m, n);
        printf("%d
    ",s);
        return 0;
    }
    
    
    //代码实现的核心部分是从最后排在最后的那位人开始的
    //因为第一位永远只能是还鞋的人,那么代码的实现会很别扭,所以思路转换成从最后一位人开始排列 
    int FangAn(int m,int n)
    {
        //m<n的时候,即排在前面的没有一个是还鞋的,不符合题目要求,函数开始返回 
        if (m<n)
        {
            return 0;
        }
        //当需要借鞋的人数==0,即没有的时候,此次排列是成功的 
        if (n==0)
        {
            return 1;
        }
        //假设两种情况,一种是排一个还鞋的,一个是排借鞋的 
        return FangAn(m-1, n)+FangAn(m, n-1);//起初,我并不能理解这部分
    }
  • 相关阅读:
    CSS知识点总结[部分]
    前端知识日常总结
    上传第三方jar包到nexus
    maven命令
    mac安装并配置nexus3.5.1版本
    前端解决跨域问题
    Package.json 属性说明
    nodejs日常总结
    log4j.properties总结
    Spring整合Hibernate
  • 原文地址:https://www.cnblogs.com/UncleXiang/p/6290129.html
Copyright © 2020-2023  润新知