| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1897 人关注过本帖
标题:123456789=100
只看楼主 加入收藏
沙漠狼
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-1-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
123456789=100
哪位高手可以用算法帮我实现:123456789=100在等式左边任意插入“+”或“—”使等式成立。
搜索更多相关主题的帖子: 算法 
2010-01-05 19:57
flylee
Rank: 5Rank: 5
等 级:职业侠客
帖 子:309
专家分:374
注 册:2004-8-10
收藏
得分:20 
若干年前做过此题,让我想想
2010-01-05 20:42
沙漠狼
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-1-5
收藏
得分:0 
回复 2楼 flylee
好的。谢谢你,一定要帮帮我,这是我课程设计的题目。
2010-01-05 21:05
flylee
Rank: 5Rank: 5
等 级:职业侠客
帖 子:309
专家分:374
注 册:2004-8-10
收藏
得分:0 
程序代码:
#include <stdio.h>

char sign[9];
int res;

void search(int pos)
{
    int val, i;
    if(pos == 10) {
        if(res == 100) {
            for(i=0; i<9; ++i) {
                if(sign[i]) printf("%c", sign[i]);
                printf("%d", i+1);
            }
            printf("=100\n");
        }
    }
    else {
        val = 0;
        for(i=pos; i<10; ++i) {
            val += i;

            res += val;
            sign[pos-1] = '+';
            search(i + 1);
            res -= val;

            res -= val;
            sign[pos-1] = '-';
            search(i + 1);
            res += val;

            val *= 10;
            sign[i] = 0;
        }
    }
}

int main()
{
    res = 0;
    search(1);
    return 0;
}

2010-01-05 21:06
沙漠狼
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-1-5
收藏
得分:0 
可以跟我说一下算法思想吗?我运行的时候有错误,能帮我改一下吗?
2010-01-05 21:28
flylee
Rank: 5Rank: 5
等 级:职业侠客
帖 子:309
专家分:374
注 册:2004-8-10
收藏
得分:0 
回复 5楼 沙漠狼
哪里错误?我在我的机器上运行没有问题
图片附件: 游客没有浏览图片的权限,请 登录注册
2010-01-05 21:31
flylee
Rank: 5Rank: 5
等 级:职业侠客
帖 子:309
专家分:374
注 册:2004-8-10
收藏
得分:0 
回复 5楼 沙漠狼
思路,其实就是一个不加优化的深度优先搜索
2010-01-05 21:32
沙漠狼
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-1-5
收藏
得分:0 
哦,知道了,谢谢,的却没错,在我的机子运行不行再我同学的上面可以,谢谢!太感激了!
2010-01-05 21:47
沙漠狼
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2010-1-5
收藏
得分:0 
你这是用C语言写的吧?有些地方我不太明白,因为我学的是C++的,你可以再跟我说一下你是具体用什么数据结构的吗?最好详细一点,谢谢!
2010-01-05 21:51
flylee
Rank: 5Rank: 5
等 级:职业侠客
帖 子:309
专家分:374
注 册:2004-8-10
收藏
得分:0 
回复 9楼 沙漠狼
C和C++在基础语法上没多大区别,我觉得应该能看懂这个程序
至于数据结构,这个题还用不到什么复杂的数据结构,我只用了全局的res和sign[]来分别保存当前计算得到的值以及符号
如果有不明白的地方,我想更多是算法上的原因,推荐你看一些DFS和BFS方面的东西,google一下就能得到很多
2010-01-05 22:03
快速回复:123456789=100
数据加载中...
 
   



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

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