| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2722 人关注过本帖
标题:蓝桥杯 啤酒与饮料 递归算法
只看楼主 加入收藏
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
回复 10楼 jklqwe111
程序代码:
#include <stdio.h>
#include <math.h>
#define EPS 0.000001
#define EQ(x, v) (v  < x + EPS && x < v + EPS)
#define P 1.9
#define Q 2.3
#define M 82.3

int main(void) {
    int i = 0;
    double s = P + Q, t = 0;

    while((t = M - ++i * s) > 0)
        if(EQ(fmod(t, P), 0.0)) printf("%d\n", i);

    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2015-03-30 19:09
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define EPS 0.000001
#define EQ(x, v) (v  < x + EPS && x < v + EPS)
#define P 19
#define Q 23
#define M 823
int main(void) {
    int i = 0;
    double s ,w;
    s=P+Q;
    w=M;
    while((w-=s) >=P)
{
        i++;
        if(EQ(fmod(w, P), 0.0)) printf("%d\n", i);
    }
    return 0;
}
fmod函数使用时有些问题,精度不够,如上面代码,能够正确运行,但把数据改为小数,即:
#define P 1.9
#define Q 2.3
#define M 82.3
运行结果不正确。
2015-03-30 19:59
heso
Rank: 2
等 级:论坛游民
帖 子:20
专家分:39
注 册:2015-3-15
收藏
得分:0 
#include<stdio.h>
int main()
{
    int p,y;//瓶酒 饮料
    for(p=0;p<=35;p++)
        for(y=0;y<=43;y++)
            if(2.3*p+1.9*y==82.3&&p<y)
                printf("%d\n",p);
    return 0;
}
2015-03-31 08:54
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:0 
回复 13楼 heso

for(y=0;y<=43;y++)
  if(2.3*p+1.9*y==82.3&&p<y)
判断是否能够整除,思路很好,但是 2.3*p+1.9*y==82.3这样判断是不行的,判断结果难以预料。
2015-03-31 09:55
lgg2526
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-4-2
收藏
得分:0 
学习
2015-04-02 13:07
快速回复:蓝桥杯 啤酒与饮料 递归算法
数据加载中...
 
   



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

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