1057: 纸牌还原

1057: 纸牌还原

时间限制: 1 Sec  内存限制: 128 MB
提交: 10  解决: 8
[提交][状态][讨论版][命题人:13087216664]

题目描述

小明和小红在玩纸牌游戏,小明突然想到一种纸牌玩法:手上有13张牌点数为1~13叠放在一起;进行以下步骤:

1. 将顶上的第一张牌放到纸牌堆的下面;

2. 将顶上的第一张牌放在桌上。

3. 反复进行1、2步直到所有的牌都在桌上。

然后让小红说出这13张牌原来在手上的初始状态的顺序是什么,你能帮助她吗?

输入

给出这13张牌在桌上的顺序

输出

输出这13张牌在手上的初始顺序

样例输入

2 4 6 8 10 12 1 5 9 13 7 3 11

样例输出

1 2 3 4 5 6 7 8 9 10 11 12 13

来源

   程序功能:准备13张牌,标上序号1、2、3直到13,然后按题意处理,得到一定顺序的数字组合,最后以此数字组合顺序为下标读取数据,所得数组即是原纸牌顺序!!!

#include<stdio.h>

扫描二维码关注公众号,回复: 2456509 查看本文章

#define N 13

int main()

{

    int a[N+1]={0};

    int b[N+1];//N 张牌处理后的下标顺序

    int i=1,number=1,num=0;

    while(number!=N+1)//number已经处理的纸牌数量

    {

        if(!a[i])

        {

            num++;

           if(num%2==0)//第二张牌打出

           {

              b[number++]=i;

              a[i]=1;//排除

           }

        }

        i=i%13+1;

    }

    for(i=1;i<N+1;i++)

        scanf("%d",&a[(b[i])]);

    for(i=1;i<N+1;i++)

        printf("%d ",a[i]);

    printf("\n");

    return 0;

}

/**************************************************************

    Problem: 1057

    User: 201703120136

    Language: C

    Result: 正确

    Time:12 ms

    Memory:1092 kb

****************************************************************/

                         

猜你喜欢

转载自blog.csdn.net/shenyulingyeye/article/details/81097935