美文网首页
重拾算法Day07-小猫钓鱼

重拾算法Day07-小猫钓鱼

作者: 面试小集 | 来源:发表于2016-11-07 09:00 被阅读29次

    小猫钓鱼游戏

    #include <stdio.h>
    
    struct queue {
        int data[1000];
        int head;
        int tail;
    };
    
    struct stack {
        int data[10];
        int top;
    };
    
    int main(int argc, const char * argv[]) {
        
        struct queue q1, q2;
        struct stack s;
        int book[10];
        
        q1.head = 1;
        q1.tail = 1;
        
        q2.head = 1;
        q2.tail = 1;
        
        s.top = 0;
        
        for (int i=0; i<=9; i++) {
            book[i] = 0;
        }
        
        for (int i=1; i<=6; i++) {
            scanf("%d", &q1.data[q1.tail]);
            q1.tail ++;
        }
        
        for (int i=1; i<=6; i++) {
            scanf("%d", &q2.data[q2.tail]);
            q2.tail ++;
        }
        
        
        while (q1.head<q1.tail && q2.head<q2.tail) {
            int t = q1.data[q1.head];
            
            if (book[t] == 0) {
                q1.head ++;
                s.top ++;
                s.data[s.top] = t;
                book[t] = 1;
            }else {
                q1.head ++;
                q1.data[q1.tail] = t;
                q1.tail ++;
                while (s.data[s.top] != t) {
                    book[s.data[s.top]] = 0;
                    q1.data[q1.tail] = s.data[s.top];
                    q1.tail ++;
                    s.top --;
                }
                book[s.data[s.top]] = 0;
                q1.data[q1.tail] = s.data[s.top];
                q1.tail ++;
                s.top --;
            }
            
            if (q1.head == q1.tail) {
                break;
            }
            
            
            t = q2.data[q2.head];
            
            if (book[t] == 0) {
                q2.head ++;
                s.top ++;
                s.data[s.top] = t;
                book[t] = 1;
            }else {
                q2.head ++;
                q2.data[q2.tail] = t;
                q2.tail ++;
                while (s.data[s.top] != t) {
                    book[s.data[s.top]] = 0;
                    q2.data[q2.tail] = s.data[s.top];
                    q2.tail ++;
                    s.top --;
                }
                book[s.data[s.top]] = 0;
                q2.data[q2.tail] = s.data[s.top];
                q2.tail ++;
                s.top --;
            }
            
            if (q2.head == q2.tail) {
                break;
            }
            
        }
        
        
        if (q2.head == q2.tail) {
            printf("heng\n");
            for (int i=q1.head; i<=q1.tail-1; i++) {
                printf("%d ", q1.data[i]);
            }
            if (s.top>0) {
                printf("桌上的牌是:");
                for (int i=1; i<s.top; i++) {
                    printf("%d ", s.data[i]);
                }
            }
        }
        
        if (q1.head == q1.tail) {
            printf("ha\n");
            for (int i=q2.head; i<=q2.tail-1; i++) {
                printf("%d ", q2.data[i]);
            }
            if (s.top>0) {
                printf("桌上的牌是:");
                for (int i=1; i<s.top; i++) {
                    printf("%d ", s.data[i]);
                }
            }
        }
        
        
        
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:重拾算法Day07-小猫钓鱼

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