标题:DEV怎么实现数学游戏的列举?
只看楼主
oyd7141
Rank: 1
等 级:新手上路
帖 子:6
专家分:7
注 册:2008-12-8
结帖率:0
已结贴  问题点数:20 回复次数:3 
DEV怎么实现数学游戏的列举?
游戏规则:两人轮流报数,每次只能报1或2,把两个人报的所有数加起来,谁报数后和是10,谁就获胜。

程序要求:穷举出所有的方法。

思路:把“每次报的数”和“从根结点累加的和”存放在二叉树的结点上。和小于10,就继续创建子结点;和等于或大于10就不再创建子结点。最后打印累加和为10的结点的父结点。

求实现以上思路的C代码。
搜索更多相关主题的帖子: DEV 数学 子结点 结点 游戏 
2020-11-02 19:10
oyd7141
Rank: 1
等 级:新手上路
帖 子:6
专家分:7
注 册:2008-12-8
得分:0 
1+1+1+1+1+1+1+1+1+1=10;
1+1+1+1+1+1+1+1+2=10;
1+1+1+1+1+1+1+2+1=10;
……
2+2+2+2+2=10;
2020-11-02 19:12
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
“DEV怎么实现”我不知道,我只知道标准C语言怎么实现

程序代码:
#include <stdio.h>

int main( void )
{
    char buf[] = "1111111111";

    ////////////////////////////////

    for( int last=sizeof(buf)-2; ; )
    {
        puts( buf );

        int sum = -1;
        for( ; last>=0 && (sum<0 || buf[last]!='1'); --last )
            sum += buf[last]-'0';
        if( last < 0 )
            break;
        buf[last] = '2';
        for( ; sum>0; --sum )
            buf[++last] = '1';
        buf[last+1] = '\0';
    }
}
随手写着玩的,若有错误 概不负责
2020-11-02 21:04
郭阳yang
Rank: 1
等 级:新手上路
帖 子:24
专家分:9
注 册:2020-10-24
得分:0 
2020-11-10 19:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503732-1-1.html




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

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