| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2722 人关注过本帖
标题:蓝桥杯 啤酒与饮料 递归算法
取消只看楼主 加入收藏
cs1344
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-3-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
蓝桥杯 啤酒与饮料 递归算法
#include<stdio.h>
double i=1.9,j=2.3,s=0;

void f(int n,int p,double q)
{     
    if(q<0) return;
    if(q==s&&n<p){//钱为0 且饮料多于啤酒
        printf("啤酒=%d\t饮料=%d",n,p);
        return;
    }
    f(n,p+1,q-i);//买饮料
    f(n+1,p,q-j);//买啤酒
}
int main()
{
    f(0,0,82.3);
    return 0;
}  求解为什么算不出来结果
 
问题  啤酒每罐2.3元,饮料每罐1.9元。小明买了若干啤酒和饮料,一共花了82.3元。

    我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。

[ 本帖最后由 cs1344 于 2015-3-25 21:05 编辑 ]
搜索更多相关主题的帖子: return double include 啤酒 饮料 
2015-03-25 21:04
cs1344
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-3-2
收藏
得分:0 
回复 2楼 诸葛欧阳
递归不麻烦啊 只不过占用时间的确比for要久 问题找出来了 少了一个判断条件
#include<stdio.h>
double i=1.9,j=2.3,s=0;

void f(int n,int p,double q)
{     
    if(q<0) return;
    else if(q==s&&n<p){//钱为0 且饮料多于啤酒
        printf("啤酒=%d\t饮料=%d",n,p);
        return;
    }
    else if(q==s&&n>=p)return;
   
    f(n,p+1,q-i);//买饮料 -1.9
    f(n+1,p,q-j);//买啤酒 -2.3
}
int main()
{
    f(0,0,82.3);
    return 0;
}
2015-03-26 19:28
快速回复:蓝桥杯 啤酒与饮料 递归算法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016791 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved