先用14跟火柴几何图形拼成的图案下面的房子,再移动其中的2根火柴

最近有朋友找工作,面试某公司,遇到一个火柴棍移动的面试题,感觉有点意思,在此抛砖引玉。
题目大致是这样的:
一个三个数的式子,移动其中一根火柴,使等式成立,用程序或实现(可以用伪码),输出能成立的等式。
注:“+”可以移走一根火柴变成“-”
废话不说,直接上代码,哪位网友有更好的方法,请分享一下,多谢
#include &stdio.h&
/* 定义操作符号,&+&或&-& */
#define SYMBOL_ERROR 0
#define SYMBOL_ADD
#define SYMBOL_MINUS 2
/* 定义变化标识,取值原则:3个中随便取出n个相加不能等于其中一个数 */
#define FLAG_NO
/* 没有移动 */
#define FLAG_MINUS 10
/* 去一根火柴 */
#define FLAG_ADD
/* 增加一根火柴 */
#define FLAG_SELF
/* 拿一根放自己身上另外的位置 */
/* 定义合法移动 */
#define MOVE_TO_ANOTHER 110
/* 10 + 100 + 0,一个数拿一根,放到另一个数上 */
#define MOVE_TO_SELF
/* 1000 + 0 + 0,自己拿一根放自己身上其他位置 */
#define MOVE_FROM_PLUS
/* 100 + 0 + 0,从加号上拿一根放一个数身上 */
/* 定义火柴移动结构体 */
typedef struct matchstick
int iF /* 变化标识 */
int iD /* 火柴表示的数 */
}MATCH_STICK_S;
获取一个数不动或移动一根火柴后得到的数(只列举3和6,其他数值类似)
入参:指定的数(0-9)
出差:MATCH_STICK_S结构数组
返回值:移动一根火柴得到的数的个数
int getDataAfterMoveStick(int iData, MATCH_STICK_S *pstStick)
int iCount = 0;
switch(iData)
pstStick[0].iFlag = FLAG_NO; pstStick[0].iData = 3;
/* 不动 */
pstStick[1].iFlag = FLAG_ADD; pstStick[1].iData = 9;
/* 加一根 */
pstStick[2].iFlag = FLAG_SELF; pstStick[2].iData = 2; /* 自己移动一根 */
pstStick[3].iFlag = FLAG_SELF; pstStick[3].iData = 3;
pstStick[4].iFlag = FLAG_SELF; pstStick[4].iData = 5;
iCount = 5;
pstStick[0].iFlag = FLAG_NO; pstStick[0].iData = 6;
/* 不动 */
pstStick[1].iFlag = FLAG_ADD; pstStick[1].iData = 8;
/* 加一根 */
pstStick[5].iFlag = FLAG_MINUS; pstStick[5].iData = 5; /* 减一根 */
pstStick[2].iFlag = FLAG_SELF; pstStick[2].iData = 0;
/* 自己移动一根 */
pstStick[3].iFlag = FLAG_SELF; pstStick[3].iData = 6;
pstStick[4].iFlag = FLAG_SELF; pstStick[4].iData = 9;
iCount = 6;
/* 移动火柴
SYMBOL_ERROR:非法移动
SYMBOL_MINUS:从&+&上取一根加到某个数上
SYMBOL_ADD:
不从&+&取火柴时,移动一根
char checkStickMove(int iFlag1, int iFlag2, int iFlag3)
char cSymbol = SYMBOL_ERROR;
int iFlagSum = iFlag1 + iFlag2 + iFlag3;
if((MOVE_TO_ANOTHER == iFlagSum) || (MOVE_TO_SELF == iFlagSum))
cSymbol = SYMBOL_ADD;
else if(MOVE_FROM_PLUS == iFlagSum)
cSymbol = SYMBOL_MINUS;
/* 满足移动规则,并能使等式成立的,打印出来 */
void printResult(MATCH_STICK_S *pstStick1, MATCH_STICK_S *pstStick2, MATCH_STICK_S *pstStick3)
int iFlag1 = pstStick1-&iF
int iFlag2 = pstStick2-&iF
int iFlag3 = pstStick3-&iF
int iData1 = pstStick1-&iD
int iData2 = pstStick2-&iD
int iData3 = pstStick3-&iD
char cSymbol = checkStickMove(iFlag1, iFlag2, iFlag3);
if((SYMBOL_ADD == cSymbol) && (iData3 == iData1 + iData2))
printf(&%d + %d = %d\n&, iData1, iData2, iData3);
else if((SYMBOL_MINUS == cSymbol) && (iData3 == iData1 - iData2))
printf(&%d - %d = %d\n&, iData1, iData2, iData3);
/* 处理火柴移动 */
void dealStickMove(int iData1, int iData2, int iData3)
unsigned long ulLoop1, ulLoop2, ulLoop3;
int iCount1, iCount2, iCount3;
MATCH_STICK_S astStick1[10];
MATCH_STICK_S astStick2[10];
MATCH_STICK_S astStick3[10];
iCount1 = getDataAfterMoveStick(iData1, astStick1);
iCount2 = getDataAfterMoveStick(iData2, astStick2);
iCount3 = getDataAfterMoveStick(iData3, astStick3);
for(ulLoop1 = 0; ulLoop1 & iCount1; ulLoop1++)
for(ulLoop2 = 0; ulLoop2 & iCount2; ulLoop2++)
for(ulLoop3 = 0; ulLoop3 & iCount3; ulLoop3++)
printResult(&astStick1[ulLoop1], &astStick2[ulLoop2], &astStick3[ulLoop3]);
int main()
dealStickMove(3, 6, 3);
运行结果:
3 + 0 = 3
本文已收录于以下专栏:
相关文章推荐
概述:     年前在网上看到这道题目,由于自己的工作也是每天纠结于这需求那需求的,就做了下这道题目,并谨慎的发出来,以寻求更多指点。     希望不要飞来板砖一片,本人对此感觉压梨很大。  &#16...
有时候,有些面试题是很是无厘头,这不,又有一个,还记得小时候玩的的“火柴棍游戏”吗,就是移动一根火柴棍改变一个图或字的游戏.程序面试居然也可以这么玩,看看下面这个火柴棍式的程序面试题吧.
文章参考自陈大大的博客“火柴棍式”程序员面试题,
下面是一个C程序,想要输出20个减号,粗心的程序员把代码写错了,你需要修改一下的代码,但是你只能添加或修改其中的一个字符,请给出三种方案:
有时候,有些面试题是很是无厘头,这不,又有一个,还记得小时候玩的的“火柴棍游戏”吗,就是移动一根火柴棍改变一个图或字的游戏。程序面试居然也可以这么玩,看看下面这个火柴棍式的程序面试题吧。下面是一个C程...
这是我的周考面试题
需要把面试题好好复习下
这样才会在工作有个好的发展
http://blog.csdn.net/w00w12l/article/details/8143591?locati...
他的最新文章
讲师:刘文志
讲师:陈伟
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)> 问题详情
如图是由15根火柴组成的图形.请你移动2根火柴,使它变成5个同样的正方形.
悬赏:0&答案豆
提问人:匿名网友
发布时间:
如图是由15根火柴组成的图形.请你移动2根火柴,使它变成5个同样的正方形.
您可能感兴趣的试题
1如图是用火柴棒搭成的一张翻倒的而且掉了一条腿的椅子,请移动2根火柴棒,使椅子翻过来,而且看上去不少腿.2如果三个人合吃三个馒头,用3分钟的时间吃完,照这样的速度,九个人合吃同样大小的九个馒头,需要______分钟才能吃完.33只猫3天吃3只老鼠,照这样的速度,9只猫9天吃______只老鼠.4用9个圆组成一个三角形,只要移动3个圆,就能使这个三角形与原来上下相反,你知道怎么移动吗?
我有更好的答案
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……
找答案会员
享三项特权
找答案会员
享三项特权
找答案会员
享三项特权
选择支付方式:
支付宝付款
郑重提醒:支付后,系统自动为您完成注册
请使用微信扫码支付(元)
支付后,系统自动为您完成注册
遇到问题请联系在线客服QQ:
请您不要关闭此页面,支付完成后点击支付完成按钮
遇到问题请联系在线客服QQ:
恭喜您!升级VIP会员成功
常用邮箱:
用于找回密码
确认密码:11.用9根火柴摆成的路灯,移动四根,把它变成四;12.用12根火柴摆成的灯,移动三根火柴,变为五;13.用10根火柴摆成一个三角阵,请你移动3根火;14.用火柴摆成四个正方形,如移动其中2根,使图;习题答案;提高班第五讲摆火柴棒习题;1.每题移动一根火柴棒,使等式成立;2.如图:拿掉3根火柴,使它变成3个正方形,怎样;3.用12根火柴棒,摆成6个大小一样的
11.用9根火柴摆成的路灯,移动四根,把它变成四个完全相等的三角形。
12.用12根火柴摆成的灯,移动三根火柴,变为五个完全相等的三角形。
13.用10根火柴摆成一个三角阵,请你移动3根火柴,使这个三角阵的尖端向下,把图形倒过来。
14.用火柴摆成四个正方形,如移动其中2根,使图形中减少一个正方形,应怎样移动?
提高班 第五讲
习题 1.每题移动一根火柴棒,使等式成立。
2.如图:拿掉3根火柴,使它变成3个正方形,怎样拿?
3.用12根火柴棒,摆成6个大小一样的三角形,请你拿走3根,还剩下3个大小一样的三角形。
4.如下图,由火柴棒摆了两只倒扣着的杯子,请移动4根火柴,把杯口正过来。
5.由火柴摆成的定风旗如图所示,移动四根火柴,使它成为一座房子。
6.用10根火柴摆成两只高脚杯(如图),移动六根火柴,使它变成一座房子。
7.用12根火柴,摆成四个大小一样的正方形,怎么摆?
8.先用14根火柴摆成下图的房子,再移动其中的2根火柴,把这座房子改成面向左边的
9.这个图形是用5根火柴摆成的,请你移动3根火柴的位置,把它倒过来。
10.用火柴棒摆成头朝上的龙虾,移动三根火柴,使它头朝下。
11.用9根火柴摆成的路灯,移动四根,把它变成四个完全相等的三角形。
12.用12根火柴摆成的灯,移动三根火柴,变为五个完全相等的三角形。
13.用10根火柴摆成一个三角阵,请你移动3根火柴,使这个三角阵的尖端向下,把图形倒过来。
14.用火柴摆成四个正方形,如移动其中2根,使图形中减少一个正方形,应怎样移动?
二年级 秋季班 第六讲
找规律填图 习题
基础班 1.请你接着画。
三亿文库包含各类专业文献、文学作品欣赏、专业论文、行业资料、幼儿教育、小学教育、各类资格考试、中学教育、高等教育、二年级奥数题(精选)12等内容。 
 小学二年级奥数题及答案 - 奥数题100道及答案_学科竞赛_小学教育_教育专区。小学二年级奥数题及答案 -&奥数题 100 道及答案一、 计算题。 ( 共 100 题) 1...  小学二年级奥数题及答案_学科竞赛_小学教育_教育专区。小学二年级奥数题及答案 1. 妹妹今年 6 岁,哥哥今年 11 岁,当哥哥 16 岁时,妹妹几岁? 2. 小明从学校...  强烈推荐 二年级数学奥数题精选_二年级数学_数学_小学教育_教育专区。二年级数学思维训练 5 1、在合适的地方插入“+”或“-”,使等式成立。 1 2 3 4 5 6 ...  二年级奥数题(精选)_二年级数学_数学_小学教育_教育专区。二年级奥数题(精选) 二年级奥数基础班第一讲 速算与巧算习题 1.计算:18+28+72 2.计算:100-68= ...  二年级奥数题(精选)_学科竞赛_小学教育_教育专区。二年级奥数题(精选) 二年级奥数 基础班第一讲 速算与巧算习题 1.计算:18+28+72 2.计算:100-68= 28+44...  二年级奥数题(答案)_学科竞赛_小学教育_教育专区。二年级数学奥数题 1、用 0...全球冷笑话精选 89份文档
应届生求职季宝典 英文个人简历模板 创意简历模板汇集...  二年级上学期数学奥数题___姓名_学科竞赛_小学教育_教育专区。二年级上学期数学...二年级数学奥数题精选 暂无评价 8页 1下载券
二年级上学期数学题 1页 免费...  二年级奥数题(精选)_学科竞赛_小学教育_教育专区。二年级奥数题(精选) 奥数精选速算: 1.计算:18+28+72 28+44+62+56-20 2.计算:100-68= 00...怎样使等式14-1+1=3..用火柴组成.只能调动一根火柴使公式成立?
怎样使等式14-1+1=3..用火柴组成.只能调动一根火柴使公式成立?
09-04-17 &
11-1≠2(把“+”的竖着的火柴放在等号上面)这样这个不等式就成立了!!!
请登录后再发表评论!
把+号中横着的一根火柴放到14的前面:114 -111 = 3
请登录后再发表评论!
1+1-1+1=3,把4的左侧那根竖着的向右向下各移动半个身位,就行了。
请登录后再发表评论!
把加号上横着的那根放到14前面
请登录后再发表评论!
二楼真厉害
请登录后再发表评论!
请登录后再发表评论!

我要回帖

更多关于 几何图形拼成的图案 的文章

 

随机推荐