2、穷举(枚举、暴力)

一、算法思想

    列举出所有可能的情况,逐个判断哪些符合问题的要求,从而得到问题的全部解答。

    穷举法的关键问题:确定穷举范围、确定判断条件。

二、入门

    1、百鸡问题

    鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

三、例题

    1、生理周期

    http://poj.org/problem?id=1006

    思路:

    (1)输入四个整数:d1,d2,d3和d。p,e,i分别表示第一次体力、情感和智力高峰出现的时间(即距当年第一天的天数,如:0表示当年第一天,1表示当年第2天……)。d是给定的时间,可能小于d1,d2,d3。

    2、假币问题

    http://poj.org/problem?id=1013

    思路:

    (1)12枚硬币real[12],标志着如果是even时,它们都标志为true

    (2)flag[12]当up时,左边的++,右边的--

    (3)当down时,左边的--,右边的++

    (4)当real=true的时候必定为真币,其他的偏离值越大,它就是假的

    3、完美立方

    http://poj.org/problem?id=1543

    思路:直接暴力吧

   

    4、画家问题

    http://poj.org/problem?id=1681

    思路:

    (1)我们按照从上到下、从左到右的顺序确定需要粉刷的砖块。

    (2)考虑相邻两行间的相互影响,下一行的每一格只能影响上一行正对的一格。因此,当上一行的粉刷方案确定后,下一行的粉刷方案也随之确定。

例如:

    poj1681

    第一行粉刷后墙壁状态如上左图显示,则粉刷第二行时,为了使第一行都变成黄色,必须粉刷第1、3、4、7格,粉刷后如上右图所示。

    总的算法是枚举第一行的粉刷方案,然后用上述方法依次确定下面各行的粉刷方案。在由于第k行的粉刷方案保证第k-1行为黄色。n行全部完成后,只需检查第n行是否全为黄色,就可以判断这种方案是否合法。

    用一个bool数组map[n][n]表示整个墙壁的状态,map[i][j]=true表示第i行,j列为白色

     代码:

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值