DEV怎么实现数学游戏的列举?
游戏规则:两人轮流报数,每次只能报1或2,把两个人报的所有数加起来,谁报数后和是10,谁就获胜。程序要求:穷举出所有的方法。
思路:把“每次报的数”和“从根结点累加的和”存放在二叉树的结点上。和小于10,就继续创建子结点;和等于或大于10就不再创建子结点。最后打印累加和为10的结点的父结点。
求实现以上思路的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'; } }随手写着玩的,若有错误 概不负责