LQ0046 凑算式枚举
Posted 海岛Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0046 凑算式枚举相关的知识,希望对你有一定的参考价值。
题目出处:蓝桥杯2016初赛 C++ B组G题
题目描述
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
输出格式
输出一个整数表示答案
问题分析
求解法数量,需要枚举所有的可能,使用置换函数next_permutation()得到全排列再行计算,程序代码最为简洁。
可以用多重循环来实现枚举,也可以用DFS来实现枚举。
程序计算结果得29。
AC的C++语言程序如下:
/* LQ0046 凑算式 */
#include <iostream>
#include <algorithm>
using namespace std;
double a[] = 1, 2, 3, 4, 5, 6, 7, 8, 9;
int main()
int cnt = 0;
do
double sum = a[0] + a[1] / a[2]
+ (a[3] * 100 + a[4] * 10 +a[5]) / (a[6] * 100 + a[7] * 10 + a[8]);
if (sum == 10.0) cnt++;
while (next_permutation(a, a + 9));
printf("%d\\n", cnt);
return 0;
以上是关于LQ0046 凑算式枚举的主要内容,如果未能解决你的问题,请参考以下文章