蓝桥集训之带分数

蓝桥集训之带分数

  • 核心思想:递归 + 暴力

    • 因为就一个数 暴力就行了
    • 1 - 9全排列 然后双指针ij分割成三部分 判断条件
cpp 复制代码
  #include<iostream>
  #include<cstring>
  
  using namespace std;
  const int N = 10;
  int num[N];
  int target,res;
  bool st[N];
  
  int calc(int l,int r)  //计算一段的数值(全排列)
  {
      int cnt=0;
      for(int i=l;i<=r;i++)
      {
          cnt = cnt*10 + num[i];
      }
      return cnt;
  }
  int dfs(int u)
  {
      if(u == 9)  //全排列完成 所有数都用过了
      {
          for(int i=0;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,8);
                  if(a * c + b == c * target) res ++;  //因为除法是整除 所以转化为加减乘
              }
          }
      }
      
      for(int i=1;i<=9;i++)  //九个数遍历一遍
      {
          if(!st[i])  //没用过
          {
              st[i] = true;
              num[u] = i;
              dfs(u+1);  //递归
              st[i] = false;  //恢复现场
          }
      }
      return res;
  }
  int main()
  {
      cin>>target;
      cout<<dfs(0)<<endl;
      return 0;
  }
相关推荐
一只乔哇噻4 分钟前
java后端工程师+AI大模型开发进修ing(研一版‖day61)
java·开发语言·学习·算法·语言模型
Cx330❀17 分钟前
Git 基础操作通关指南:版本回退、撤销修改与文件删除深度解析
大数据·运维·服务器·git·算法·搜索引擎·面试
前端小白在前进19 分钟前
力扣刷题:合并两个有序数组
算法·leetcode·职场和发展
john_hjy37 分钟前
标量、向量、矩阵、张量
算法·机器学习·矩阵
qq_4308558842 分钟前
线代第一章行列式第八课:克莱姆法则(Cramer法则)
线性代数·算法·矩阵
小妖66643 分钟前
力扣(LeetCode)- 542. 01 矩阵
算法·leetcode·矩阵
小年糕是糕手44 分钟前
【C++】内存管理(下)
java·c语言·开发语言·数据结构·c++·算法
CoderYanger1 小时前
第 479 场周赛Q2——3770. 可表示为连续质数和的最大质数
java·数据结构·算法·leetcode·职场和发展
像风一样自由20201 小时前
U-Net 图像分割算法:从零开始的完全指南
算法
云泽8081 小时前
蓝桥杯算法精讲:前缀和与差分算法的应用与实战
算法·职场和发展·蓝桥杯