题目描述
100 可以表示为带分数的形式:100 = 3 + 69258 / 714。
还可以表示为:100 = 82 + 3546 / 197。
注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。
类似这样的带分数,100 有 11 种表示法。
输入
从标准输入读入一个正整数N (N<1000*1000)
输出
程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。
样例输入
100
样例输出
11

代码如下:

#include <iostream>
using namespace std;
#include <cstring>
int n,ans = 0;
const int N = 11;
bool use[N],use2[N];bool check(int suma,int sumc)
{long long b = (long long )sumc * n - suma*sumc;if (!b){return false;}memcpy(use2,use,sizeof(use));//memcpy这一步用的不错!!!while(b){if (use2[b%10] || !(b%10))//这一步很关键!!!{return false;}use2[b%10] = true;b /= 10;}for (int i =1;i<=9;i++){if (!use2[i]){return false;}}return true;
}void dfs_c(int u,int suma,int sumc)
{if (u > 9){return ;}if (check(suma,sumc)){ans++;return ;}for (int i = 1;i<=9;i++){if (!use[i]){use[i] = true;dfs_c(u+1,suma,sumc*10+i);use[i] = false;}}
}void dfs_a(int u,int suma)
{if(suma>=n){return ;}if (u){dfs_c(u,suma,0);}for (int i = 1;i<=9;i++){if (!use[i]){use[i] = true;dfs_a(u+1,suma*10+i);use[i] = false;}}
}int main()
{cin>>n;dfs_a(0,0);cout<<ans<<endl;return 0;
}
#include <iostream>
#include <cstring>
using namespace std;
typedef long long LL;
const int N = 12;
bool vis[N];
int n;
int ans;
bool check(int suma,int sumc)
{bool st[N];LL sum_b = (LL)sumc*n-(LL)suma*sumc;memcpy(st,vis,sizeof(vis));while(sum_b){if (st[sum_b%10] || sum_b%10==0) return false;//这一步很关键!!!st[sum_b%10] = true;sum_b = sum_b/10;}for (int i = 1;i<=9;i++){if (!st[i]) return false;}return true;
}void dfs_c(int u,int suma,int sumc)
{if (u > 9) return ;if (check(suma,sumc) && sumc!=0){ans++;return ;}for (int i = 1;i<=9;i++){if (!vis[i]){vis[i]  =true;dfs_c(u+1,suma,sumc*10+i);vis[i]  = false;}}
}void dfs_a(int u,int suma)
{dfs_c(u,suma,0);for (int i = 1;i<=9;i++){if (!vis[i]){vis[i] = true;dfs_a(u+1,suma*10+i);vis[i] = false;}}
}int main()
{cin>>n;dfs_a(0,0);cout<<ans<<endl;return 0;
}

[蓝桥杯]带分数-dfs相关推荐

  1. 蓝桥杯Java——DFS深度优先搜索算法

    目录 基本概念 算法思想 模板 例子 基本概念 深度优先搜索算法(Depth First Search,简称DFS):一种用于遍历或搜索树或图的算法. 沿着树的深度遍历树的节点,尽可能深的搜索树的分支 ...

  2. 蓝桥杯-带分数(C语言)

    9. 标题:带分数 可以表示为带分数的形式:100 = 3 + 69258 / 714 还可以表示为:100 = 82 + 3546 / 197 注意特征:带分数中,数字1~9分别出现且只出现一次(不 ...

  3. 受伤的皇后(蓝桥杯)(DFS)

    Question: 题目描述 有一个 n×n 的国际象棋棋盘(n行n列的方格图),请在棋盘中摆放 n 个受伤的国际象棋皇后,要求: 任何两个皇后不在同一行. 任何两个皇后不在同一列. 如果两个皇后在同 ...

  4. [蓝桥杯2019初赛]迷宫-DFS、BFS两种方法

    迷宫问题的最短路,加最小字典序 迷宫文件maze.txt传送门 作者写的2019年B组蓝桥杯解集 . . . DFS的版本 #include<iostream> #include<c ...

  5. 蓝桥杯2017国赛 瓷砖样式 dfs+map

    标题:磁砖样式小明家的一面装饰墙原来是 3*10 的小方格.现在手头有一批刚好能盖住2个小方格的长方形瓷砖.瓷砖只有两种颜色:黄色和橙色.小明想知道,对于这么简陋的原料,可以贴出多少种不同的花样来.小 ...

  6. 蓝桥杯c语言试题幸运数,蓝桥杯  历届试题 幸运数  dfs

    时间限制:1.0s   内存限制:256.0MB 问题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成 . 首先从1开始写出自然数1,2,3,4,5,6,. ...

  7. 【解题报告+通法】_九宫幻方 蓝桥杯 2017年C组第八题(dfs解法)

    题目描述 小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行.每一列和每一条对角线的和都是相同的. 三阶幻方又被 ...

  8. 16行代码AC_蓝桥杯 2017年C组第三题 算式900(暴力解法+DFS解法)

    励志用更少的代码做更高效的表达 题目描述: 小明的作业本上有道思考题: 看下面的算式: (□□□□-□□□□)*□□=900 其中的小方块代表0~9的数字,这10个方块刚好包含了0~9中的所有数字. ...

  9. 蓝桥杯2015决赛-方格填数-枚举 or dfs

    题目描述 在2行5列的格子中填入1到10的数字. 要求:相邻的格子中的数,右边的大于左边的,下边的大于上边的. 如下图所示的2种,就是合格的填法. 请你计算一共有多少种可能的方案. 输出 请输出该整数 ...

最新文章

  1. VMware host-only模式上网设置
  2. C语言输入一个任意数求各位数的和
  3. Python学习笔记(五) Python高级特性
  4. 解决 web.xml is missing and failOnMissingWebXml is set to true 报错
  5. plsql 快捷键设置
  6. 程序员必须知道的15件事(转)
  7. [Unity][FlowCanvas] 被重复执行的节点,只要其中一次执行出现报错,该报错就会在脚本中一直显示
  8. linux nginx 配置端口访问,Linux入门教程:ubuntu 16.04配置nginx服务器实现一个IP一个端口多个站点,ubuntunginxNginx 使用异步...
  9. 小刘同学的CMOS模拟集成电路学习小记(不停更新)
  10. PPT精品教程隐私政策
  11. 如何区分网线是几类的_网线如何区分五类线、超五类线和六类线?
  12. 入坑之路第七天(防御策略报表工具)
  13. python制作日历_用Python制作一份你专属的爱豆日历
  14. Spring 核心 之 AOP
  15. 电能质量:电压暂升暂降中断
  16. 万字长文:功能安全量产落地的三座大山
  17. Windows Terminal配置
  18. element输入框限制数字输入
  19. 激光测距误差对激光脚点定位的影响
  20. CNN卷积神经网络简单示例(PyTorch)

热门文章

  1. Android studio编译出现Failed to finalize session : INSTALL_FAILED_INVALID_APK
  2. Android之基于xmpp openfire smack开发之Android消息推送技术原理分析和实践[4]
  3. 云计算及应用课程知识整理
  4. 如何用c语言验证一个定理,验证动量定理方法一
  5. 全地球的水也没办法将这个“特殊”的瓶子装满!
  6. 美少女什么味??竟然还有美少女风味泡面......
  7. 说普通话时舌头卷不起来是一种什么体验?| 今日最佳
  8. 拼多多出现大Bug:100无门槛券随便领,一晚损失200亿
  9. 听说你在学习算法?清华教授为你准备了一份独家秘籍!
  10. 提升代码可读性的 10 个技巧