POJ 1276 Cash Machine 解题报告

POJ 1276 Cash Machine 解题报告

编号:1276

 

考查点:枚举、搜索

 

思路:这个是zz让我看得代码,看了别人的自然知道如何抄了..自己肯定想不到怎么能够不拉下任何一种cash情况.

 

提交情况:看了别人的代码,今天还在这道题上TLEN次,后来才发现是循环变量写错了..

 

Source Code


// POJ Grids 1276
#include  < stdio.h >
#include 
< string .h >
#include 
< stdlib.h >

struct  Bill{
    
int  n;
    
int  d;
};
Bill b[
11 ];
bool  flag[ 100001 ];

int  compare( const   void *  e1, const   void *  e2)
{
    Bill
*  a  =  (Bill * )e1;
    Bill
*  b  =  (Bill * )e2;
    
return  b -> -  a -> d;
}

int  main()
{
    
int  cash,n;
    
while  (scanf( " %d %d " , & cash, & n) != EOF)
    {
        
for  ( int  i = 0 ;i < n;i ++ )
        {
            scanf(
" %d %d " , & b[i].n, & b[i].d);
        }
        
if  ( ! cash ||! n)
        {
            printf(
" 0\n " );
            
continue ;
        }
        qsort(b,n,
sizeof (Bill),compare);
        memset(flag,
false , sizeof  flag);
        flag[
0 =   true ;
        
int  max  =   0 ;
        
for  ( int  i = 0 ;i < n;i ++ )
            
for  ( int  j = max;j >= 0 ;j -- )
                
if  (flag[j])
                    
for  ( int  k = 1 ;k <= b[i].n;k ++ )
                    {
                        
int  temp  =  j  +  k * b[i].d;
                        
if  (temp > cash)
                            
break ;
                        max 
=  temp > max  ?  temp : max;
                        
if  ( ! flag[temp])
                            flag[temp] 
=   true ;
                    }

                    printf(
" %d\n " ,max);
    }

    
return   0 ;
}

总结:这道英文题不是书上的,自己目前肯定搞不定这么麻烦的问题,努力.

 

 

 

                                                       By   Ns517

                                                      Time 09.02.05

转载于:https://www.cnblogs.com/ns517/archive/2009/02/05/1384959.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值