【蓝桥杯】带分数

带分数

题目要求用一个a+b/c的形式得到一个值,而且只能在1~9里面不重复的组合。

可以对1~9进行全排列,然后不断划分区间。

cpp 复制代码
#include<iostream>
#include<vector>
using namespace std;
int st[15];
int num[15];
int res;
int n;

int calc(int l, int r)
{
    int res = 0;
    for (int i = l; i <= r; i++)
    {
        res = res * 10 + num[i];
    }
    return res;
}

void dfs(int u)
{
    //分解
    if (u == 10)
    {
        for (int i = 1; i <= 7; i++)
        {
            for (int j = i + 1; j <= 8; j++)
            {
                int a = calc(0, i);
                int b = calc(i + 1, j);
                int c = calc(j + 1, 9);
                if (a * c + b == n * c)
                {
                    res++;
                }
            }
        }
    }

    //组合1~9的全排列
    for (int i = 1; i <= 9; i++)
    {
        if (!st[i])
        {
            //如果没有排列过
            num[u] = i;
            st[i] = true;
            dfs(u + 1);
            st[i] = false;
            num[u] = -1;
        }
    }
}

int main(void)
{
    cin >> n;
    dfs(1);
    printf("%d", res);
    return 0;
}
相关推荐
ZZhYasuo3 分钟前
冒泡排序1
java·算法·排序算法
重生之后端学习4 分钟前
72. 编辑距离
数据结构·算法·leetcode·深度优先·图论
juleskk5 分钟前
3.15 复试训练
算法
j_xxx404_6 分钟前
力扣:525.连续数组和1314.矩阵区域和(二维前缀和)
算法·leetcode·矩阵
23.7 分钟前
【Java】Arrays工具类——数组操作终极指南
java·算法·面试
Sunsets_Red8 分钟前
模意义下及同余的公式整理
c语言·c++·数学·算法·c#·数论·信息学竞赛
计算机安禾11 分钟前
【C语言程序设计】第27篇:递归函数原理与实例分析
c语言·开发语言·数据结构·c++·算法·蓝桥杯·visual studio
無限進步D14 分钟前
C++ 万能头
开发语言·c++·算法·蓝桥杯·竞赛·万能头
qq_4181017718 分钟前
C++中的状态模式
开发语言·c++·算法
weixin_3077791319 分钟前
构建健壮的XML文档抓取与摘要流水线:Requests + urllib3.Retry + lxml 实践
xml·开发语言·python·算法·性能优化