三羊献瑞|2015年蓝桥杯B组题解析第三题-fishers
三羊献瑞
观察下面的加法算式:
祥 瑞 生 辉
- 三 羊 献 瑞
三 羊 生 瑞 气
(如果有对齐问题,可以参看【图1.jpg】)
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
答案:1085
思路一:暴力法,8层循环,从0~9中选8个数参与加法运算,筛选条件:满足abcd+efgb = efcbx
思路二:dfs求全排列,筛选条件满足:abcd+efgb = efcbx
代码一暴力枚举:
#include<iostream>
using namespace std;
/*枚举法,暴力解法*/
int main(){
// abcd + efgb
for(int a = 1;a<=9;a++){
for(int b = 0;b<=9;b++){
if(b == a){
continue;
}
for(int c = 0;c<=9;c++){
if(c==b || c==a){
continue;
}
for(int d = 0;d<=9;d++){
if(d==c || d==b || d==a){
continue;
}
for(int e = 1;e<=9;e++){
if(e==d || e==c ||e ==b || e==a){
continue;
}
for(int f=0;f<=9;f++){
if(f == e|| f==d ||f == c || f==b || f==a){
continue;
}
for(int g=0;g<=9;g++){
if(g==f ||g == e|| g== d|| g==c ||g == b|| g==a){
continue;
}
int x = a*1000+b*100+c*10+d;
int y = e*1000+f*100+g*10+b;
int z = e*10000+f*1000+c*100+b*10;
//筛选条件
for(int i=0;i<=9;i++){
if(i==a||i==b||i==c||i==d||i==e||i==f||i==g){
continue;
}
if(x+y == z+i){
cout<<y<<endl;
}
}
}
}
}
}
}
}
}
return 0;
}
代码二dfs全排列:
#include<iostream>
using namespace std;
bool visited[10];
int arr[10];
//参数k表示第k个位置 共8个位置 abcd + efgh
void dfs(int k){
if(k==9){
//判断条件
int x = 1000*arr[1] + 100*arr[2] + 10*arr[3] + arr[4];
int y = 1000*arr[5] + 100*arr[6] + 10*arr[7] + arr[2];
int z = 10000*arr[5] + 1000*arr[6] + 100*arr[3] + 10*arr[2];
for(int i = 0;i<=9;i++){
if(!visited[i]){
z = z + i;
if(z == x+y){
cout<<y<<endl;
}
z = z - i;
}
}
return;
}
if(k==1 || k==5){
for(int i=1;i<=9;i++){
if(!visited[i]){
visited[i] = true;
arr[k] = i;
dfs(k+1);
visited[i] = false;
}
}
}else{
for(int i=0;i<=9;i++){
if(!visited[i]){
visited[i] = true;
arr[k] = i;
dfs(k+1);
visited[i] = false;
}
}
}
}
int main(){
dfs(1);
}
三羊献瑞|2015年蓝桥杯B组题解析第三题-fishers的更多相关文章
- 2015年蓝桥杯B组C/C++决赛题解
2015年第六届蓝桥杯B组C/C++决赛题解 点击查看2015年第六届蓝桥杯B组C/C++国赛题目(不含答案) 1.积分之迷 三重循环 枚举A,B,C的值,如果满足两个条件:3个A + 7个B ...
- 2015年蓝桥杯B组C/C++决赛题目
2015年第六届蓝桥杯B组C/C++国赛题目 点击查看2015年第六届蓝桥杯B组C/C++国赛题解 1.积分之迷 小明开了个网上商店,卖风铃.共有3个品牌:A,B,C. 为了促销,每件商品都会 ...
- 第六届蓝桥杯JavaB组国(决)赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.分机号 X老板脾气古怪,他们公司的电话分机号都是3位数,老板规定,所有号码必须是降序排列,且不能有重复的数位.比如: 751,520, ...
- 第六届蓝桥杯JavaA组国(决)赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.胡同门牌号 小明家住在一条胡同里.胡同里的门牌号都是连续的正整数,由于历史原因,最小的号码并不是从1开始排的. 有一天小明突然发现了有 ...
- 星系炸弹|2015年蓝桥杯B组题解析第二题-fishers
星系炸弹 在X星系的广袤空间中漂浮着许多X星人造"炸弹",用来作为宇宙中的路标. 每个炸弹都可以设定多少天之后爆炸. 比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2 ...
- 牌型种数|2015年蓝桥杯B组题解析第七题-fishers
牌型种数 小明被劫持到X赌城,被迫与其他3人玩牌. 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张. 这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不考虑自己得 ...
- 加法变乘法|2015年蓝桥杯B组题解析第六题-fishers
加法变乘法 我们都知道:1+2+3+ ... + 49 = 1225 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如: 1+2+3+...+1011+12+...+2728+29+ ...
- 垒骰子|2015年蓝桥杯B组题解析第九题-fishers
垒骰子 赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体. 经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥! 我们先来规范一下骰子:1 的 ...
- 移动距离|2015年蓝桥杯B组题解析第八题-fishers
移动距离 X星球居民小区的楼房全是一样的,并且按矩阵样式排列.其楼房的编号为1,2,3... 当排满一行时,从下一行相邻的楼往反方向排号. 比如:当小区排号宽度为6时,开始情形如下: 1 2 3 4 ...
随机推荐
- Elasticsearch 的坑爹事——记录一次mapping field修改过程(转)
原文:http://www.cnblogs.com/Creator/p/3722408.html 本文记录一次Elasticsearch mapping field修改过程 团队使用Elasticse ...
- 代码这样写更优雅(Python版)
要写出 Pythonic(优雅的.地道的.整洁的)代码,还要平时多观察那些大牛代码,Github 上有很多非常优秀的源代码值得阅读,比如:requests.flask.tornado,笔者列举一些常见 ...
- sql server作业管理查看/进程管理查看命令
一.作业管理 (1) select * from msdb.dbo.sysjobhistory 可以查看作业的历史记录 (2) select * from msdb.dbo.sysjobs 查 ...
- Shell中的表达式及IF
#!/bin/bash #你值得收藏的四则表达式运算. val1=1 val2=1 val3=1 val4=1 val5=1 val6=1 val7=1 let val1++ ((val2++)) v ...
- android 操作SD卡上的文件
(1)说明:操作SD卡上的文件须要增加下面权限 在SD卡上创建和删除文件权限 <uses-permission android:name="android.permission.M ...
- CentOS工作内容(一)CentOS6.4的安装 hwclock和date
CentOS工作内容(一)CentOS6.4的安装 hwclock和date 光碟安装 分配20G磁盘空间 插入光碟 选择第一项安装 如果要急救的话请选择第三项 启动安装进程 跳过光碟检测 选择nex ...
- Python 使用ctypes调用 C 函数
在python中通过ctypes可以直接调用c的函数,非常简单易用 下面就一步一步解释用法吧,以Linux为例讲解. 1, 首先确定你的python支持不支持ctypes python2.7以后cty ...
- pyrhon3与mysql:查、更、删49
import pymysql conn = pymysql.connect(host=',db='jodb1',port=3307,charset='utf8') # 172.31.10.225 # ...
- GreenPlum安装greenplum-cc-web监控
一. GreenPlum集群安装环境 由虚拟机搭建的一台master两台segment. 二.安装前准备 1) 所需安装包 GreenPlum监控安装包: greenplum-cc-web-3.0.2 ...
- js里实现给数字加三位一逗号间隔的两种方法
方法一: <script type= "text/javascript"> var num_s = "1232134456.546 ";ale ...