在电视上看到的游戏,规则是:
移动1根(目前只看到1根的,或许有两根或以上,不过再多就比较难了)火柴,使给出的4位数成为最大(或最小)。
当然火柴不能弄断,也不能消失什么的,这点和偶们小学暑假作业的那种不一样。
因此这种题用偶擅长的穷举法来解是最合适不过的了。
生成的算法……随机产生!不过产生后可以根据输出的match参数判断题目大概的难度,match的越多应该就越难。
程序会用字符拼出火柴的摆放形状以便观察。
程序的使用方式是(假设编译为match.exe):
match
生成随机数并给出答案
match 数字
解得给出的数
程序在linux gcc上编译通过。

#include
<
stdio.h
>
#include
<
stdlib.h
>
//
count of digits
#define
DIGITS 4
//
how many time(s) of movement allowed
#define
MAXMOVE 1

#define
WIDTH (DIGITS * 4)
#define
HEIGHT 5


const
unsigned
char
LED[
10
]
=
...
{ 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x27, 0x7F, 0x6F }
;

const
unsigned
char
MASKS[
7
][
3
]
=
...
{

...{ 0x00, 0x10, 0x20 },

...{ 0x20, 0x21, 0x22 },

...{ 0x22, 0x23, 0x24 },

...{ 0x04, 0x14, 0x24 },

...{ 0x02, 0x03, 0x04 },

...{ 0x00, 0x01, 0x02 },