[蓝桥杯]带分数-dfs

题目描述
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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311897.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性代数---向量问题的求解方法

线性代数—向量问题的求解方法 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

java 定时_Java线上定时任务不定期挂掉问题分析

作者&#xff1a;IKNOW本尊问题背景收到频繁的告警邮件&#xff0c;定时任务调度失败&#xff0c;查看xxl-job的执行器列表是空的&#xff0c;但是服务又显示健康&#xff0c;查看历史任务执行记录发现执行器是依次递减&#xff0c;由于是线上服务&#xff0c;只能先重启&#…

gRPC in ASP.NET Core 3.x -- Protocol Buffer, Go语言的例子(上)

前两篇文章半年前写的&#xff1a;gRPC in ASP.NET Core 3.0 -- Protocol Buffer&#xff08;1&#xff09;&#xff0c;gRPC in ASP.NET Core 3.0 -- Protocol Buffer&#xff08;2&#xff09;之前把protocol buffer的基础知识讲了一遍&#xff0c;今天使用Go语言做一些例子。…

word List 11

word List 11 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

[蓝桥杯]蚂蚁感冒

题目描述 长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左&#xff0c;有的朝右。 每只蚂蚁都只能沿着杆子向前爬&#xff0c;速度是1厘米/秒。 当两只蚂蚁碰面时&#xff0c;它们会同时掉头往相反的方向爬行。 这些蚂蚁中&#xff0c;有1只蚂蚁感冒了。并且在和其它蚂蚁…

温故知新 .Net重定向深度分析

在早期的.NET Framework程序员心里&#xff0c;重定向Redirect其实分为两种&#xff1a;Response.Redirect&#xff1a;Response对象的Redirect方法提供了一种实现客户端重定向的方法Server.Transfer&#xff1a;Server对象的Transfer方法使用服务器执行重定向&#xff0c;并避…

笔记本电脑销量排名_网友总结京东笔记本销量,联想高居第一,华为表现很出色...

笔记本电脑&#xff0c;还是要看大品牌。网友总结近30天京东笔记本销量&#xff0c;结局让人出乎意料。网友直呼&#xff0c;原来华为笔记本这么强。智能手机的出现&#xff0c;对传统的PC行业造成了一定的影响&#xff0c;但它始终还是无法替代PC的功能。在这个行业中&#xf…

数据结构---二叉排序树

数据结构—二叉排序树 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> typedef struct bstTree {int data;struct bstTree* lchild, *rchild; }bstTree; void createBSTTree(bstTree* & T,int data) {//创建二叉…

研发协同平台持续集成2.0架构演进

在上篇《研发协同平台持续集成实践》一文中我们分享了为什么要做持续集成&#xff0c;技术选型&#xff0c;工作原理以及实践落地。今天我们从架构上来分享一下架构层面的设计和演进。持续集成1.0在最开始设计的过程中&#xff0c;本着一切从需求出发&#xff0c;一切以实现业务…

口袋操作系统_全自动阀口袋包装机的发展

随着全球产业技术的不断发展&#xff0c;包装机行业也出现了产业结构调整的动向&#xff0c;因为全新的全自动阀口袋包装机和全新的包装产品技术问世&#xff0c;那些制作粗糙&#xff0c;能源消耗大&#xff0c;技术相对比较落后的阀口袋包装机也将会被市场一步步淘汰掉&#…

[蓝桥杯]最大子阵

题目描述 给定一个n*m的矩阵A&#xff0c;求A中的一个非空子矩阵&#xff0c;使这个子矩阵中的元素和最大。 其中&#xff0c;A的子矩阵指在A中行和列均连续的一块。 输入 输入的第一行包含两个整数n, m&#xff0c;分别表示矩阵A的行数和列数。 接下来n行&#xff0c;每行m个整…

数据结构---二叉搜索树

数据结构—二叉搜索树 原理&#xff1a;参考趣学数据结构 代码&#xff1a; 队列代码&#xff1a; #pragma once #define N 100 #define elemType bstTree* #include<stdlib.h> typedef struct bstTree {int data;struct bstTree* lchild, *rchild; }bstTree; typede…

《ASP.NET Core 微服务实战》-- 读书笔记(第10章)

第 10 章 应用和微服务安全云应用意味着应用运行所在的基础设施无法掌控&#xff0c;因此安全不能再等到事后再考虑&#xff0c;也不能只是检查清单上毫无意义的复选框由于安全与云原生应用密切相关&#xff0c;本章将讨论安全话题&#xff0c;并用示例演示几种保障 ASP.NET Co…

里加一列为1_9月1号新宠物食品法规实施啦,辣鸡宠物食品遭殃,你也可能违法...

大家好啊&#xff0c;今天是2019年9月1号&#xff0c;对于宠物行业其实是一个非常特别的日子今天宠物饲料管理办法正式实施加上2019年1月1号实施的宠物饲料卫生规定以及2015年3月8号实施的全价宠物食品 犬粮&#xff0c;猫粮标准中国的所有的猫狗宠物食品在今天有法可依&#x…

[蓝桥杯2016初赛]凑算式-dfs,next_permutation

代码如下&#xff1a; #include <iostream> using namespace std; const int N 15; bool st[N]; double a[N];int cnt; void dfs(int u) {if (u 10) {if (a[1] a[2] / a[3] (a[4] * 100 a[5] * 10 a[6]) / (a[7] * 100 a[8] * 10 a[9]) 10) {cnt;}}for (int i …

word List 12

word List 12 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

软硬件协同编程 - C#玩转CPU高速缓存(附示例)

写在前面好久没有写博客了&#xff0c;一直在不断地探索响应式DDD&#xff0c;又get到了很多新知识&#xff0c;解惑了很多老问题&#xff0c;最近读了Martin Fowler大师一篇非常精彩的博客The LMAX Architecture&#xff0c;里面有一个术语Mechanical Sympathy&#xff0c;姑且…

python操作excel_使用Python操作Excel时必学的3个库

Python对Excel的操作我主要用xlwt、xlrd、xlutils这三个库。1、xlwt主要用来创建并写入数据到Excel。已经存在的表不可以写入。以下使用Python写九九乘法表到Excel运行之后&#xff0c;代码文件所在的文件夹会多出一个”九九乘法表“的Excel&#xff0c;内容如下图&#xff1a;…

[蓝桥杯2018初赛]字母阵列-单向dfs

题目描述 仔细寻找&#xff0c;会发现&#xff1a;在下面的8x8的方阵中&#xff0c;隐藏着字母序列&#xff1a;“LANQIAO”。 SLANQIAO ZOEXCCGB MOAYWKHI BCCIPLJQ SLANQIAO RSFWFNYA XIFZVWAL COAIQNAL我们约定: 序列可以水平&#xff0c;垂直&#xff0c;或者是斜向&#…

线性代数---线性方程组

线性代数—线性方程组 常见题型的解题技巧 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;