14 1 1 3移动火柴怎么移动

如何挪动一根火柴,就能制造一个正方形?_百度知道
如何挪动一根火柴,就能制造一个正方形?
com/zhidao/pic/item/eaf81a4c510fd9fdd42a.
虽哦这个图是一个空间三维的视觉图,你现在看到的其实是一个立体图,挪动一根就可以
左边的挪2毫米,让四根火柴的火柴棒的顶端(就是那个十字形的中心)组成一个正方形,因为每根火柴的顶端都是方的,所以用四个火柴的顶端组成一个正方形
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁八根火柴摆成两个四边形 怎样移动两跟火柴变成一个四边形呢?
【导语】:八根火柴摆成两个四边形,怎样移动两跟火柴变成一个四边形呢?一个困扰我们很久的小学数学题终于有解了,知道答案后小编也为老师给跪了! &
欢迎关注“深圳本地宝”公众号更多实用资讯等你发现!
欢迎关注“深圳地铁公交读物”公众号你坐地铁必备的掌中读物!
如果您要投稿或合作,请联系小编QQ:
首页上一页1共5页
【导语】: “玛雅人并没有预言末日”。美国天文考古学家认为世界末日的假想不能当证据看待,更不能当作预言。
  玛雅人事实上并不擅长预言,他们对时间的认识大多是针对过去的,而不是未来。―?
【导语】: 八根火柴摆成两个四边形,怎样移动两跟火柴变成一个四边形呢?一个困扰我们很久的小学数学题终于有解了,知道答案后小编也为老师给跪了!
网友关注排行移动火柴棍
您的位置: & 移动火柴棍
评分:暂无评分人气:168
评分:人气:4270
评分:暂无评分人气:366
评分:人气:356
评分:人气:1689
评分:人气:8569
评分:人气:1902
评分:人气:1142
评分:暂无评分人气:841
评分:人气:2795
评分:人气:3910
评分:人气:2781
评分:人气:1178
评分:人气:1553
评分:人气:977
评分:人气:2370
评分:人气:89
评分:人气:196
评分:人气:20
评分:人气:28
评分:人气:39
评分:人气:423
评分:人气:47
评分:人气:240
评分:人气:14
评分:暂无评分人气:435
评分:人气:82
评分:人气:1817
评分:人气:685
评分:暂无评分人气:416
评分:人气:6154
评分:人气:556
评分:暂无评分人气:175
评分:人气:6570
评分:人气:93036
评分:人气:25917
评分:人气:13543
评分:人气:2248
评分:人气:700
评分:人气:10700
评分:人气:216811
评分:人气:808
评分:人气:655
评分:人气:55624
评分:人气:39518
评分:人气:6902
更多推荐专辑巧移火柴棒答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
巧移火柴棒答案
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩7页未读,继续阅读
你可能喜欢1225人阅读
最近有朋友找工作,面试某公司,遇到一个火柴棍移动的面试题,感觉有点意思,在此抛砖引玉。
题目大致是这样的:
一个三个数的式子,移动其中一根火柴,使等式成立,用程序或实现(可以用伪码),输出能成立的等式。
注:“+”可以移走一根火柴变成“-”
废话不说,直接上代码,哪位网友有更好的方法,请分享一下,多谢
#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
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:166577次
积分:2347
积分:2347
排名:第10361名
原创:92篇
转载:34篇
评论:31条
(1)(1)(1)(4)(49)(9)(36)(1)(13)(8)(3)}

我要回帖

更多关于 6008移动两根火柴 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信