[蓝桥杯2018决赛]最大乘积-dfs

题目描述
把 1~9 这9个数字分成两组,中间插入乘号,
有的时候,它们的乘积也只包含1~9这9个数字,而且每个数字只出现1次。
比如:
984672 * 351 = 345619872
98751 * 3462 = 341875962
9 * 87146325 = 784316925

符合这种规律的算式还有很多,请你计算在所有这些算式中,乘积最大是多少?
输出
输出一个整数表示答案

代码如下:

#include <iostream>
#include <cstring>
using namespace std;
typedef long long LL;
LL maxv = -1;
const int N = 12;
bool vis[N];
bool st[N];bool check(int suma, int sumc) {LL b = (LL)suma * sumc;memset(vis, 0, sizeof(vis));//标记数组记得重置if (!b) {return false;}while (b) {if (vis[b % 10] || b % 10 == 0)return false;vis[b % 10] = true;b = b / 10;}for (int i = 1; i <= 9; i++) {if (!vis[i])return false;}return true;
}void dfs_c(int u, int suma, int sumc) {//if (u > 9) {if (u >= 9) { //边界不要弄错if (check(suma, sumc)) {maxv = max((LL)suma * sumc, maxv);return ;}return ;}for (int i = 1; i <= 9; i++) {if (!st[i]) {st[i] = true;dfs_c(u + 1, suma, sumc * 10 + i);st[i] = false;}}
}void dfs_a(int u, int suma) {if (u) {dfs_c(u, suma, 0);}for (int i = 1; i <= 9; i++) {if (!st[i]) {st[i] = true;dfs_a(u + 1, suma * 10 + i);st[i] = false;}}
}int main() {dfs_a(0, 0);cout << maxv << endl;return 0;
}
#include <iostream>
using namespace std;
typedef long long LL;
const int N = 12;
bool vis[N];
LL maxv = -1;bool check_1(int suma,int sumc)
{int  st[N];memset(st,0,sizeof(st));//必不可少
//	for (int i = 1;i<=9;i++)或者写成这样,反正无论怎么写,都要初始化为0
//	{
//		st[i] = 0
//	}LL sumb = suma*(LL)sumc;while(sumb){st[sumb%10]++;sumb = sumb/10;}for (int i = 1;i<=9;i++){if (st[i]!=1)return false;}return true;
}void dfs_c(int u,int suma,int sumc)
{if (u > 9) return ;if (u==9){if (check_1(suma,sumc) && sumc!=0){LL sumb = (LL)suma*sumc;maxv = max(maxv,sumb);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()
{dfs_a(0,0);cout<<maxv<<endl;return 0;
}

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

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

相关文章

linux源码_从linux源码看epoll及epoll实战揭秘

从linux源码看epoll前言在linux的高性能网络编程中&#xff0c;绕不开的就是epoll。和select、poll等系统调用相比,epoll在需要监视大量文件描述符并且其中只有少数活跃的时候&#xff0c;表现出无可比拟的优势。epoll能让内核记住所关注的描述符&#xff0c;并在对应的描述符事…

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

第 9 章 微服务系统的配置微服务系统中的配置需要关注更多其他方面的因素&#xff0c;包括&#xff1a;配置值的安全读写值变更的审计能力配置信息源本身的韧性和可靠性少量的环境变量难以承载大型、复杂的配置信息应用要决定是否支持配置值的在线更新和实时变更&#xff0c;还…

数据结构---简单插入排序

数据结构—简单插入排序 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> void simpleInsertSort(int a[], int length) {//简单插入排序int j;for (int i 2; i < length; i) {//从第二个元素开始比较插入if (a[i]…

[蓝桥杯2018初赛]小朋友崇拜圈

题目描述 班里N个小朋友&#xff0c;每个人都有自己最崇拜的一个小朋友&#xff08;也可以是自己&#xff09;。 在一个游戏中&#xff0c;需要小朋友坐一个圈&#xff0c; 每个小朋友都有自己最崇拜的小朋友在他的右手边。 求满足条件的圈最大多少人&#xff1f; 小朋友编号为…

python做接口自动化如何输出测试报告-python生成接口自动化测试报告模版

自动化测试报告&#xff1a;&test_data被测版本&#xff1a;&version 成功&#xff1a;&pass 失败&#xff1a;&fail 错误&#xff1a;&error 最后时间&#xff1a;&lasttime记录编号: 记录编号: 记录编号: 记录编号: 记录编号: 记录编号: 记录编号: 记…

前端 JS/TS 调用 ASP.NET Core gRPC-Web

前言在上两篇文章中&#xff0c;介绍了ASP.NET Core 中的 gRPC-Web 实现 和 在 Blazor WebAssembly 中使用 gRPC-Web&#xff0c;实现了 Blazor WebAssembly 调用 ASP.NET Core gRPC-Web。虽然 ASP.NET Core 中的 gRPC-Web 实现目前还是试验性项目&#xff0c;但是鉴于它在生态…

数据结构---哈夫曼树

数据结构—哈夫曼树 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #define N 100 #define INF 2^31-1 typedef struct fNode {//哈夫曼树中每个节点的信息int c;//字符int parent;//父节点&#xff0c;左右孩子&am…

[蓝桥杯]错误票据---stringstream应用举例

题目描述 某涉密单位下发了某种票据&#xff0c;并要在年终全部收回。 每张票据有唯一的ID号。全年所有票据的ID号是连续的&#xff0c;但ID的开始数码是随机选定的。 因为工作人员疏忽&#xff0c;在录入ID号的时候发生了一处错误&#xff0c;造成了某个ID断号&#xff0c;另…

热电偶校验仪_热电偶校验方法_烟台一等热电偶,干湿两用温度校验炉公司

杭州中创为您详细解读hzzc6烟台一等热电偶的相关知识与详情&#xff0c;防爆涡轮流量计的转速通过拆正在机壳外的传感线圈来检测&#xff0e;当涡轮流量计叶片切割由壳体内**磁钢发生的磁力线时&#xff0c;就会引起传感线圈中的磁通变革&#xff0e;传感线圈将检测到的磁通周期…

手把手教你用C#做疫情传播仿真

手把手教你用C#做疫情传播仿真在上篇文章中&#xff0c;我介绍了用 C#做的疫情传播仿真程序的使用和配置&#xff0c;演示了其运行效果&#xff0c;但没有着重讲其中的代码。今天我将抽丝剥茧&#xff0c;手把手分析程序的架构&#xff0c;以及妙趣横生的细节。首先来回顾一下运…

word List 10

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

[蓝桥杯]回形取数-方向向量+模拟

题目描述 回形取数就是沿矩阵的边取数&#xff0c;若当前方向上无数可取或已经取过&#xff0c;则左转90度。一开始位于矩阵左上角&#xff0c;方向向下。 输入 输入第一行是两个不超过200的正整数m, n&#xff0c;表示矩阵的行和列。接下来m行每行n个整数&#xff0c;表示这个…

java程序员选择多个offer时需要看重哪些?_对不起,我们公司不要本科以下的大学生,学历对于程序员重不重要...

来自普通大学的学生&#xff0c;总会觉得逆袭如梦似幻&#xff0c;机会在哪里&#xff1f;但放长远来看&#xff0c;更重要的是要看到&#xff1a;环境只能影响&#xff0c;却不能决定我们的人生。人生路漫长&#xff0c;最终会怎样&#xff0c;还不一定呢&#xff01;在某综艺…

中小企业团队敏捷产品开发流程最佳实践

近期因为疫情的影响&#xff0c;不少互联网公司开始尝试远程工作。也出不了少如何做好远程工作的方法&#xff0c;我认为不管是场地办公还是远程办公都依赖于原来的产品开发流程。我曾经遵循CMMI5的流程管理过15人左右的跨国/语言/文化团队&#xff0c;也遵循敏捷Scrum管理过9人…

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

数据结构—二叉线索树 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> typedef struct bmTree {int data;struct bmTree* lchild, *rchild;int ltag, rtag; }bmTree; bmTree * preNULL;//中序遍历的前驱指针 void cr…

[蓝桥杯2019初赛]不同子串-substr,模拟

题目描述 一个字符串的非空子串是指字符串中长度至少为1 的连续的一段字符组成的串。 例如&#xff0c;字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab&#xff0c;一共7 个。 注意在计算时&#xff0c;只算本质不同的串的个数。 请问&#xff0c;字符串0100110001010001 …

revit如何根据坐标进行画线_铭成教你如何根据同步带的齿形进行选型

1、同步带齿形分类梯型齿同步带分为&#xff1a;最轻型MXL、超轻型XXL、特轻型XL、轻型L、重型H、特重型XH、超重型XXH&#xff0c;共七种&#xff0c;这几种是目前市场用的最广泛的。特殊齿型的同步带又分为&#xff1a;最轻型T2.5、轻型T5、重型T10、最重型T20&#xff0c;现…

在VS Code里逛知乎、发文章?知乎 on VS Code来啦!重新定义内容创作!

本文为 牛岱 的原创文章在2020年2月10日首发于“玩转VS Code”知乎专栏你是否已经厌倦了知乎 Web 端文本编辑器糟糕的使用体验和时而出现的奇怪 Bug&#xff1f;身为程序员的你是否想用你最熟悉的 Markdown 语法写答案&#xff0c;并且获得最佳的代码块语法高亮&#xff1f;攥写…

[蓝桥杯]带分数-dfs

题目描述 100 可以表示为带分数的形式&#xff1a;100 3 69258 / 714。 还可以表示为&#xff1a;100 82 3546 / 197。 注意特征&#xff1a;带分数中&#xff0c;数字1~9分别出现且只出现一次&#xff08;不包含0&#xff09;。 类似这样的带分数&#xff0c;100 有 11 种…

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

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