第四届蓝桥杯决赛B组C/C++——填算式

标题:猜灯谜

A 村的元宵节灯会上有一迷题:

请猜谜 * 请猜谜 = 请边赏灯边猜

小明想,一定是每个汉字代表一个数字,不同的汉字代表不同的数字。

请你用计算机按小明的思路算一下,然后提交“请猜谜”三个字所代表的整数即可。

请严格按照格式,通过浏览器提交答案。

注意:只提交一个3位的整数,不要写其它附加内容,比如:说明性的文字。

答案:897

这题我想的大概两种方法:

  1. 暴力 6个for循环,没什么技术,就不说了
  2. dfs,这题其实比较巧妙,因为和八皇后很类似,你在脑中想象有一个6*10的格子(6行10列),每一列代表一个数字,10列分别从0-9;每一行分别代表一个汉字,只不过在搜索的时候要注意第0行第0列不能放(下标都从0开始),因为第0行代表的汉字是“请”,“请”不能是0,要不然就0开头了
#include<bits/stdc++.h>
using namespace std;
int res[6];//分别表示请,猜,迷,边,赏,灯
//请猜谜*请猜谜 = 请边赏灯边猜 
void dfs(int k)//搜索到了第k层
{
	int j;
	if(k == 7 && (res[0]*100+res[1]*10+res[2])*(res[0]*100+res[1]*10+res[2]) == 
		      (res[0]*100000+res[3]*10000+res[4]*1000+res[5]*100+res[3]*10+res[1]))
	{
		for(int i = 0;i < 6;i++)
			cout<<res[i]; 
		cout<<endl;
		return;
	}
	for(int i = 0;i < 10;i++)//i表示可取的列,也就是可取的值
	{
		for(j = 0;j < k;j++)//j表示第k行之前的数取值 
		{
			if(i==res[j])
				break;
		}
		if(k == j)
		{
			res[j] = i;
			if(res[0] == 0)
				 continue;
			dfs(k+1);
		}
	} 
} 
int main()
{
	dfs(0);
	return 0;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一个会写诗的程序员的博客

从爬取的文章 HTML 中提取出中文关键字

https://github.com/KotlinSpringBoot/saber

736
来自专栏移动端开发

iOS 多线程之线程锁Swift-Demo示例总结

线程锁是什么       在前面的文章中总结过多线程,总结了多线程之后,线程锁也是必须要好好总结的东西,这篇文章构思的时候可能写的东西得许多,只能挤时间一点点的...

4017
来自专栏cloudskyme

什么是线程安全

什么是线程安全?       如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且...

3058
来自专栏机器学习实践二三事

java IO体系

IO流 Java中IO流分为两种,字节流和字符流,顾名思义字节流就是按照字节来读取和写入的,字符刘是按照字符来存取的;常用的文件读取用的就是字符流,在网络通信里...

1827
来自专栏spring源码深度学习

java基础io流——OutputStream和InputStream的故事(温故知新)

IO流用来处理设备之间的数据传输,上传文件和下载文件,Java对数据的操作是通过流的方式,Java用于操作流的对象都在IO包中。

912
来自专栏Java技术

Java多线程编程-(6)-你还在使用wait/notify实现进程间的通信吗?

在《Java多线程编程-(5)-线程间通信机制的介绍与使用》已经学习了,可以使用方法wait/notify 结合同步关键字synchronized实现同步和线程...

752
来自专栏积累沉淀

Python快速学习第十一天--Python多线程

Python中使用线程有三种方式: 方法一:函数式 调用thread模块中的start_new_thread()函数来产生新线程。语法如下: thread...

1949
来自专栏我是攻城师

高效读取大数据文本文件(上亿行数据)

3324
来自专栏BaronTalk

RxJava系列四(过滤操作符)

前面一篇文章中我们介绍了转换类操作符,那么这一章我们就来介绍下过滤类的操作符。顾名思义,这类operators主要用于对事件数据的筛选过滤,只返回满足我们条件的...

37210
来自专栏Ldpe2G的个人博客

模拟线程切换 C++

683

扫码关注云+社区