| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 358 人关注过本帖
标题:这个程序的每一步到底是为啥呢,我想知道每一步的缘由
只看楼主 加入收藏
呜呜呜嗷嗷嗷
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-6-19
结帖率:0
收藏
已结贴  问题点数:10 回复次数:1 
这个程序的每一步到底是为啥呢,我想知道每一步的缘由
帮我看看这个程序每一步的缘由,谢谢
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define OP(o)   do { a[1].n = a[0].n o a[1].n; \
        sprintf(a[1].s, "(%s"#o"%s)", a[0].s, strcpy(t.s, a[1].s)); \
        if (dfs(n - 1, a + 1, r)) return 1; \
        a[1] = temp; } while (0)
struct data {
    double n;
    char s[90];
}num[4], t;

int dfs(int n, data a[], double r) {
    int i, j;
    if (n == 1)
        if (a[0].n - r > 1e-8 || a[0].n - r < -1e-8)
            return 0;
        else return 1;
    for (i = 0; i < n; ++i) {
        std::swap(a, a[0]);
        for (j = 1; j < n; ++j) {
            std::swap(a[j], a[1]);
            data temp = a[1];
            OP(+);
            OP(-);
            OP(*);
            if (a[1].n > 1e-8 || a[1].n < -1e-8)
                OP(/);
            std::swap(a[j], a[1]);
        }
        std::swap(a, a[0]);
    }
    return 0;
}

int main() {
    for (int r = 24; ; ) {
        for (int i = 0; i < 4; ++i) {
            scanf("%s", num.s);
            sscanf(num.s, "%lf", &num.n);
        }
        if (dfs(4, num, r))
            printf("%s = %d\n", num[3].s, r);
        else
            printf("No answer\n");
    }
    return 0;
}
搜索更多相关主题的帖子: double include return 
2012-06-19 18:12
liudw2
Rank: 4
等 级:业余侠客
帖 子:85
专家分:248
注 册:2011-7-31
收藏
得分:10 
你可以设置断点,慢慢看嘛,别人说的比不上自己找出来的答案来得深刻
2012-06-20 09:58
快速回复:这个程序的每一步到底是为啥呢,我想知道每一步的缘由
数据加载中...
 
   



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

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