美文网首页
栈、队列iOS实现方案-纸牌游戏 小猫钓鱼

栈、队列iOS实现方案-纸牌游戏 小猫钓鱼

作者: oceanfish | 来源:发表于2017-04-16 18:14 被阅读66次

假如游戏开始时,小哼手中有6张牌,顺序为 2 4 1 2 5 6 ,小哈手中有6张牌,顺序为3 1 3 5 6 4,最终谁会获胜呢?

//
//  main.m
//  Algorithms
//
//  Created by yuki on 2017/3/25.
//  Copyright © 2017年 kang.yu.sh. All rights reserved.
//

#import <Foundation/Foundation.h>
static NSMutableArray *queue1;
static NSMutableArray *queue2;
static NSMutableArray *stack;

void AddRemoveQueue(NSMutableArray *queue) {
    NSString *head = queue[0];
    BOOL isFind = NO;
    NSMutableArray *currentList = [NSMutableArray arrayWithCapacity:50];
    for (NSInteger j = stack.count-1; j >= 0 ; j--) {//收回桌面上牌
        [currentList addObject:stack[j]];
        if ([stack[j] isEqualToString:head]) {
            isFind = YES;
            break;
        }
    }
    if (isFind) {
        [stack removeObjectsInArray:currentList];
        [queue addObject:head];
        [queue addObjectsFromArray:currentList];
    }
    else{
        [stack addObject:head];
    }
    [queue removeObjectAtIndex:0];
}

void sumalute(){
    while (YES){
        if (queue1.count == 0) {//Q1没牌了
            for (NSInteger j = stack.count-1; j >= 0 ; j--) {
                [queue2 addObject:stack[j]];
            }
            [stack removeAllObjects];
            break;
        }
        if (queue2.count == 0) {//Q2没牌了
            for (NSInteger j = stack.count-1; j >= 0 ; j--) {
                [queue1 addObject:stack[j]];
            }
            [stack removeAllObjects];
            break;
        }

        AddRemoveQueue(queue1);
        NSLog(@"*********Queue1*********");
        NSLog(@"queue1>>>: %@, stack>>>: %@", queue1, stack);
        AddRemoveQueue(queue2);
        NSLog(@"*********Queue2*********");
        NSLog(@"queue2>>>: %@, stack>>>: %@", queue2, stack);
    }
    
    NSLog(@"******************");
    NSLog(@"queue1>>>: %@", queue1);
    NSLog(@"queue2>>>: %@", queue2);
    NSLog(@"stack >>>: %@", stack);
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        queue1 = [NSMutableArray arrayWithCapacity:100];
        [queue1 addObjectsFromArray:[NSArray arrayWithObjects:@"2",@"4",@"1",@"2",@"5",@"6", nil]];
        queue2 = [NSMutableArray arrayWithCapacity:100];
        [queue2 addObjectsFromArray:[NSArray arrayWithObjects:@"3",@"1",@"3",@"5",@"6",@"4", nil]];
        stack = [NSMutableArray arrayWithCapacity:100];
        
        sumalute();
    }
    return 0;
}


相关文章

  • 栈、队列iOS实现方案-纸牌游戏 小猫钓鱼

    假如游戏开始时,小哼手中有6张牌,顺序为 2 4 1 2 5 6 ,小哈手中有6张牌,顺序为3 1 3 5 6 4...

  • 纸牌游戏-小猫钓鱼

    规则: 星期天小哼和小哈约在一起玩桌游,他们正在玩一个非常古怪的扑克游戏——“小猫钓鱼”。游戏的规则是这样的:将一...

  • Algorithm小白入门 -- 队列和栈

    队列和栈队列实现栈、栈实现队列单调栈单调队列运用栈去重 1. 队列实现栈、栈实现队列 队列是一种先进先出的数据结构...

  • 数据结构——栈和队列

    用数组实现栈和队列 用栈实现队列 用队列实现栈 栈和队列的经典算法题最小间距栈宠物收养所 数组实现栈和队列 用数组...

  • Swift 队列&栈 相关操作

    栈 LIFO(后进先出) 队列 FIFO(先进先出) 队列与栈相互的实现 栈 - 队列实现 队列 - 栈实现 相关...

  • 38_两个有趣的问题

    关键词:通过栈实现队列、通过队列实现栈 0. 通过栈实现队列 用栈实现队列等价于用后进先出的特性实现先进先出的特性...

  • 栈&队列

    一、栈&队列总结 栈/队列的应用接雨水验证栈序列滑动窗口的最大值 栈/队列的特殊实现用两个栈实现队列用两个队列实现...

  • 队列之-队列实现栈

    一、队列实现栈核心算法概述 之前已经描述过了用栈实现队列的功能,见栈系列之-实现队列,那么同样队列也可以用来实现栈...

  • iOS开发集锦之 2017.03.30(Swift 算法实战之路

    1. Swift 算法实战之路:栈和队列 作者: 故胤道长描述:栈和队列的基本Swift实现,以及在iOS开发中应...

  • 算法-栈和队列算法总结

    栈和队列算法总结 1 模拟 1.1 使用栈实现队列 1.2 使用队列实现栈 2 栈的应用 2.1 栈操作 2.2 ...

网友评论

      本文标题:栈、队列iOS实现方案-纸牌游戏 小猫钓鱼

      本文链接:https://www.haomeiwen.com/subject/wmgaattx.html