喝啤酒带赊账

来源:互联网 发布:淘宝旺铺有什么好处 编辑:程序博客网 时间:2024/04/29 19:42
规则是:2元一瓶啤酒,两个空瓶兑换一瓶啤酒,四个瓶盖兑换一瓶啤酒, 可以赊瓶酒,结账的时候还啤酒即可。
不赊账喝:int nCount = [[[NSDrinkBeer alloc]init]DrinkWithMoney:10];

可赊账喝:int nCount = [[[NSDrinkBeer alloc]init]DrinkCanCreditWithMoney:10];


////  NSDrinkBeer.h//  FlashlightCam////  Created by jxs on 2017/7/13.////#import <Foundation/Foundation.h>//多少钱一瓶#define ONE_BEER_PER_MONEY   2//多少个瓶盖一瓶#define ONE_BEER_PER_CAP     4//多少个空瓶一瓶#define ONE_BEER_PER_BOTTLE  2//是否允许赊账#define ONPEN_CREDIT_BEER    true@interface NSBeer : NSObject //啤酒类{    }@property bool isDrinked;//是否被喝了@property bool unUsedCap;//瓶盖是否被使用了@property bool unUsedEmptyBottle;//空瓶是否被使用了@end@interface NSDrinkBeer : NSObject{    NSMutableArray *m_aryBasket;//酒篮子        int nAutoCreditNum ;//赊账啤酒}-(NSMutableArray*) BuyBeerWithMoney:(int)nMoney;//用钱买啤酒-(int) DrinkBeer:(NSMutableArray*)aryBasket;//喝啤酒,返回喝了多少瓶-(NSMutableArray*) BuyBeerWithCap:(NSMutableArray*)aryBasket;//用瓶盖买啤酒-(NSMutableArray*) BuyBeerWithBottle:(NSMutableArray*)aryBasket;//用空瓶买啤酒-(int) DrinkWithMoney:(int)nMoney;//拿钱尽情喝啤酒,返回总数-(int) DrinkCanCreditWithMoney:(int)nMoney;//拿钱尽情喝啤酒,且可以赊啤酒,还啤酒,返回总数@end

////  NSDrinkBeer.m//  FlashlightCam////  Created by jxs on 2017/7/13.////#import "NSDrinkBeer.h"@implementation NSBeer@end@implementation NSDrinkBeer-(NSMutableArray*) BuyBeerWithMoney:(int)nMoney//用钱买啤酒{    int nBuyBeers = nMoney/ONE_BEER_PER_MONEY;//2元一瓶    if (nBuyBeers<=0)return nil;            for(int i=0;i<nBuyBeers;i++)    {        NSBeer*pBeer = [[NSBeer alloc]init];        if (m_aryBasket==nil) m_aryBasket = [[NSMutableArray alloc]initWithObjects:pBeer,nil];        else [m_aryBasket addObject:pBeer];    }        return m_aryBasket;}-(NSArray*) BuyBeerWithCap:(NSMutableArray*)aryBasket//用瓶盖买啤酒{    NSMutableArray *pDH_basket = nil;//店家用来保存兑换啤酒的篮子    NSMutableArray *pAdd_basket = nil;        for(id myobj in aryBasket)    {        NSBeer*pBeer = (NSBeer*)myobj;        if (pBeer)        {            if (!pBeer.isDrinked)            {                NSLog(@"啤酒没有喝,这瓶不能兑换!");                continue;            }            else            {                if (!pBeer.unUsedCap)                {                    if (pDH_basket==nil) pDH_basket = [[NSMutableArray alloc]initWithObjects:pBeer,nil];                    else [pDH_basket addObject:pBeer];                                        if (pDH_basket.count>=ONE_BEER_PER_CAP)//满足4个盖子兑换一瓶                    {                        for(id capobj in pDH_basket)                        {                            NSBeer*pCapBeer = (NSBeer*)capobj;                            pCapBeer.unUsedCap = YES;                        }                                                //添加一瓶啤酒                        NSBeer*pNewAdBeer = [[NSBeer alloc]init];                        if (pAdd_basket==nil) pAdd_basket = [[NSMutableArray alloc]initWithObjects:pNewAdBeer,nil];                        else [pAdd_basket addObject:pNewAdBeer];                                                [pDH_basket removeAllObjects];//兑换完毕清空篮子                    }                }            }                   }            }    if (pAdd_basket&&pAdd_basket.count>0)[aryBasket addObjectsFromArray:pAdd_basket];    return aryBasket;}-(NSArray*) BuyBeerWithBottle:(NSMutableArray*)aryBasket//用空瓶买啤酒{    NSMutableArray *pDH_basket = nil;//店家用来保存兑换啤酒的篮子    NSMutableArray *pAdd_basket = nil;        for(id myobj in aryBasket)    {        NSBeer*pBeer = (NSBeer*)myobj;        if (pBeer)        {            if (!pBeer.isDrinked)            {                NSLog(@"啤酒没有喝,这瓶不能兑换!");                continue;            }            else            {                if (!pBeer.unUsedEmptyBottle)                {                    if (pDH_basket==nil) pDH_basket = [[NSMutableArray alloc]initWithObjects:pBeer,nil];                    else [pDH_basket addObject:pBeer];                                        if (pDH_basket.count>=ONE_BEER_PER_BOTTLE)//满足2个空瓶子兑换一瓶                    {                        for(id capobj in pDH_basket)                        {                            NSBeer*pCapBeer = (NSBeer*)capobj;                            pCapBeer.unUsedEmptyBottle = YES;                        }                                                //添加一瓶啤酒                        NSBeer*pNewAdBeer = [[NSBeer alloc]init];                        if (pAdd_basket==nil) pAdd_basket = [[NSMutableArray alloc]initWithObjects:pNewAdBeer,nil];                        else [pAdd_basket addObject:pNewAdBeer];                                                [pDH_basket removeAllObjects];//兑换完毕清空篮子                    }                }            }                    }            }    if (pAdd_basket&&pAdd_basket.count>0)[aryBasket addObjectsFromArray:pAdd_basket];    return aryBasket;}-(int) GetCanDrinkBeerCount:(NSMutableArray*)aryBasket//获取可以喝的啤酒数量{    int nDrinkedCount =0;    for(id myobj in aryBasket)    {        NSBeer*pBeer = (NSBeer*)myobj;        if (pBeer&&!pBeer.isDrinked)        {            nDrinkedCount++;        }    }    return nDrinkedCount;}-(bool) IsMoreCapOrBottle:(NSMutableArray*)aryBasket//是否有瓶盖或瓶子多余{    for(id myobj in aryBasket)    {        NSBeer*pBeer = (NSBeer*)myobj;        if (pBeer)        {            if (!pBeer.isDrinked)            {                NSLog(@"啤酒没有喝,这瓶不能兑换!");                continue;            }            else if (!pBeer.unUsedEmptyBottle||!pBeer.unUsedCap)            {                return true;            }        }    }    return false;}-(int) DrinkBeer:(NSMutableArray*)aryBasket//喝啤酒,返回喝了多少瓶{    if (aryBasket==nil||aryBasket.count<=0) return 0;        int nDrinkedCount =0;    for(id myobj in aryBasket)    {        NSBeer*pBeer = (NSBeer*)myobj;        if (pBeer&&!pBeer.isDrinked)        {            nDrinkedCount++;            NSLog(@"喝了第%d瓶啤酒",nDrinkedCount);            pBeer.isDrinked = true;        }    }    return nDrinkedCount;}-(int) DrinkWithMoney:(int)nMoney//拿钱尽情喝啤酒,返回总数{    if (m_aryBasket&&m_aryBasket.count>0)[m_aryBasket removeAllObjects];    nAutoCreditNum= 0;    NSMutableArray *pbasket =[self BuyBeerWithMoney:nMoney];        while ([self DrinkBeer:pbasket])    {        pbasket=[self BuyBeerWithCap:pbasket];        pbasket=[self BuyBeerWithBottle:pbasket];    }    NSLog(@"我用%d元喝了%d瓶啤酒,到底多少钱喝酒划算?",nMoney,(int)pbasket.count);    return (int)pbasket.count;}-(int) DrinkCanCreditWithMoney:(int)nMoney//拿钱尽情喝啤酒,且可以赊啤酒,还啤酒,返回总数{    if (!ONPEN_CREDIT_BEER) [self DrinkWithMoney:nMoney];//不能赊账则直接喝;        int nXNum = 0;//赊账数量    //实际最大赊账不能超过购买量,但我们给最大两倍的购买量的赊账    int nMaxDrink =0,nMaxXNumValue =0;        for (int i = 0; i<=nMoney*2/ONE_BEER_PER_MONEY; i++)    {        nXNum = i;        int nDrinkValue = [self DrinkWithMoney:nMoney+ONE_BEER_PER_MONEY*nXNum]-[self DrinkWithMoney:ONE_BEER_PER_MONEY*nXNum];        if (nDrinkValue>nMaxDrink)        {            nMaxDrink     = nDrinkValue;            nMaxXNumValue = nXNum;                        NSLog(@"我用%d元赊账%d瓶,喝了%d瓶啤酒!",nMoney,nXNum,nDrinkValue);        }    }        NSLog(@"最后我用%d元赊账%d瓶,喝了%d瓶啤酒!",nMoney,nMaxXNumValue,nMaxDrink);    return nMaxDrink;}@end


原创粉丝点击