注册 登录
编程论坛 C语言论坛

DEV怎么实现数学游戏的列举?

oyd7141 发布于 2020-11-02 19:10, 1235 次点击
游戏规则:两人轮流报数,每次只能报1或2,把两个人报的所有数加起来,谁报数后和是10,谁就获胜。

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

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

求实现以上思路的C代码。
3 回复
#2
oyd71412020-11-02 19:12
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;
#3
rjsp2020-11-02 21:04
“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';
    }
}
随手写着玩的,若有错误 概不负责
#4
郭阳yang2020-11-10 19:59
1