zoukankan      html  css  js  c++  java
  • POJ3032 Card Trick(队列)

    题目链接

    分析:

    在虚拟OJ做的时候卡了下(没读懂题)。

    题意大体是这样的,举个例子吧。

    对于2143,先拿1次,2放到队列末端变成1432,拿走1,剩下432;

    拿2次,(4,3)放到末端,变成2,4,3,拿走2,剩下4,3;

    拿3次,把4拿到末端,变成3,4(第一次),拿3到末端,变成4,3(第二次),拿4到末端,变成3,4(第3次),拿走3,剩下4.  

    OK结束了。

    思路就是倒着模拟,用的是循环队列。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define MAXN 100
    
    int qu[MAXN];
    
    int main(){
        int T, n, i, front, rear, j;
        scanf("%d", &T);
    
        while(T--){
            scanf("%d", &n);
            front = rear = 0;
            qu[rear++] = n;
            for(i=n-1; i>=1; i--){
                front--;
                front = (front+MAXN)%MAXN;
                qu[front] = i;
                for(j=0; j<i; j++){
                    rear--;
                    rear = (rear+MAXN) % MAXN;
                    front--;
                    front = (front+MAXN) % MAXN;
                    qu[front] = qu[rear];
    
                }
            }
            for(i=front; i != rear; i = (i+1)%MAXN){
                if(i == front) printf("%d", qu[i]);
                else printf(" %d", qu[i]);
            }
            putchar('\n');
        }
    
        return 0;
    }
  • 相关阅读:
    Android Studio --“Cannot resolve symbol” 解决办法
    js与android webview交互
    关于post与get请求参数存在特殊字符问题
    Fragment 学习笔记(1)
    Android Studio 错误集
    UVA
    UVA
    UVALive
    考试题string——线段树。
    洛谷 1552 [APIO2012]派遣
  • 原文地址:https://www.cnblogs.com/tanhehe/p/2976439.html
Copyright © 2011-2022 走看看