移动火柴问题的程序解法及生成算法

在电视上看到的游戏,规则是:
移动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 =   0x3F0x060x5B0x4F0x660x6D0x7D0x270x7F0x6F } ;
const  unsigned  char  MASKS[ 7 ][ 3 =   {
        
0x000x100x20 },
        
0x200x210x22 },
        
0x220x230x24 },
        
0x040x140x24 },
        
0x020x030x04 },
        
0x000x010x02 },
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值