算法题每日一练 --- 第 12 天:算式 900
一、问题描述
小明的作业本上有道思考题:
看下面的算式:
复制代码
其中的小方块代表 0 ~ 9 的数字,这 10 个方块刚好包含了 0 ~ 9 中的所有数字。 注意:0 不能作为某个数字的首位。
小明经过几天的努力,终于做出了答案!如下:
复制代码
用计算机搜索后,发现还有另外一个解,本题的任务就是:请你算出这另外的一个解。
注意:输出格式需要与示例严格一致; 括号及运算符号不要用中文输入法; 整个算式中不能包含空格。
二、题目要求
运行限制
最大运行时间:1s
最大运行内存: 128M
三、问题分析
题目要求使用 0~9 十个数字,不能重复使用每一个数字都需要用到,0 不能作为首元素完成一个等式。首先,问题规模不是很大,只有 10 个数字,排成不同的序列,判断是否满足上述条件。
所以,我们使用全排列来解决这个问题。定义一个数组 a[10]存储 10 个数字。
全排列公式:
复制代码
全排列公式头文件 algorithm,或者使用万能头文件 bits/stdc++.h
拓展
不足两位时补 0,可以使用 %02d,不足两位前面补 0,可以判断首位为 0 的情况
%d 是 int 普通的存储,%2d 按宽度为 2,采用右对齐方式输出,若数据位数不到 2 位,则左边补空格
四、编码实现
复制代码
五、输出结果
5012 4987 36
6048 5973 12
7153 6928 04 不满足条件,舍去
版权声明: 本文为 InfoQ 作者【知心宝贝】的原创文章。
原文链接:【http://xie.infoq.cn/article/37aa301f034095c4d93c827a0】。文章转载请联系作者。
评论