• UVA 10205 Stack 'em Up


    UVA_10205

        这个题目感觉就像是个模拟题,只不过读数据的时候比较蛋疼。

        我们可以始终记录每个位置上是那张牌,但这样的话每次移动的时候就必须借助一个临时数组,因为在移动的过程中我们要知道上一次各个位置的牌的情况。

        于是我们不如换个思路记录每张牌在哪个位置,这样我们每次移动的时候只需要知道每个牌所在位置变换到了哪个地方。

        最后再把每个牌所在的位置还原成每个位置有哪张牌即可。

    #include<stdio.h>
    #include<string.h>
    #include<ctype.h>
    #define MAXN 110
    char b[500];
    int g[MAXN][60], p[60], ans[60];
    char value[][10] = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace"};
    char suit[][10] = {"Clubs", "Diamonds", "Hearts", "Spades"};
    void init()
    {
    int i, j, k, ok = 0, n, num, t;
    gets(b);
    sscanf(b, "%d", &n);
    num = 1, k = 0;
    for(i = 1; i <= 52; i ++)
    p[i] = i;
    while(gets(b) != NULL)
    {
    if(b[0] == '\0')
    break;
    for(i = 0; b[i];)
    {
    if(!isdigit(b[i]))
    {
    i ++;
    continue;
    }
    sscanf(&b[i], "%d", &t);
    while(isdigit(b[i]))
    i ++;
    if(!ok)
    {
    k ++;
    g[num][t] = k;
    if(k == 52)
    {
    k = 0;
    num ++;
    if(num > n)
    ok = 1;
    }
    }
    else
    {
    for(j = 1; j <= 52; j ++)
    p[j] = g[t][p[j]];
    }
    }
    }
    }
    void printresult()
    {
    int i, v, s;
    for(i = 1; i <= 52; i ++)
    ans[p[i]] = i;
    for(i = 1; i <= 52; i ++)
    {
    v = (ans[i] - 1) % 13;
    s = (ans[i] - 1) / 13;
    printf("%s of %s\n", value[v], suit[s]);
    }
    }
    int main()
    {
    int t;
    gets(b);
    sscanf(b, "%d", &t);
    gets(b);
    while(t --)
    {
    init();
    printresult();
    if(t)
    printf("\n");
    }
    return 0;
    }


  • 相关阅读:
    hdu 2019 数列有序!
    hdu 2023 求平均成绩
    HDU 5805 NanoApe Loves Sequence (思维题) BestCoder Round #86 1002
    51nod 1264 线段相交
    Gym 100801A Alex Origami Squares (求正方形边长)
    HDU 5512 Pagodas (gcd)
    HDU 5510 Bazinga (字符串匹配)
    UVALive 7269 Snake Carpet (构造)
    UVALive 7270 Osu! Master (阅读理解题)
    UVALive 7267 Mysterious Antiques in Sackler Museum (判断长方形)
  • 原文地址:https://www.cnblogs.com/staginner/p/2293288.html
Copyright © 2020-2023  润新知