• 数据结构_yjjsj(伊姐姐数字游戏)


    问题描述

    伊姐姐热衷于各类数字游戏, 24 点、 2048、数独等轻轻松松毫无压力。一
    日,可爱的小姐姐邀请伊姐姐一起玩一种简单的数字 game,游戏规则如下:
    一开始桌上放着 n 张数字卡片,从左到右按数字 1-n 放置,小姐姐按以下步
    骤取卡片
    小姐姐取出最左边的一张牌,藏于袖中;
    小姐姐将此时剩余卡牌的最左边的 p 张移到最右边, 假设桌上的牌为 1 2 3 4
    5,移动最左边的两张卡片后结果为 3 4 5 1 2。 注意当桌上卡片数量小于 p 时不
    进行这步操作。
    所有卡牌都被藏起来以后,游戏结束。
    这是个十分简单的数字 game, 然而伊姐姐因为紧张丧失游戏能力, 你能帮
    助伊姐姐统计, 小姐姐第 k 次,第 2*k i*k (i<=n/k)藏于袖中的卡片吗?


    ★数据输入
    输入第一行为三个正整数 n(1<=n<=100000),p(0<=p<=10),k(0<k<=100),含
    义在题目中给出。


    ★数据输出
    输出为两行,第一行输出你总共要输出的卡片数量 m
    第二行 m 个数, 按顺序输出小姐姐第 k 次,第 2*k m*k 次藏的卡片。

    输入示例 输出示例
    6 3 2 3
    5 6 3


    输入示例 输出示例
    10 1 3 3
    5 2 8


    思路

      测试数据较小,暴力

    code

     1 #include <stdio.h>
     2 #include <iostream>
     3 using namespace std;
     4 #include <queue>
     5 
     6 int main()
     7 {
     8     int i,j;
     9     int n,p,k;
    10     bool first=true;
    11     
    12     scanf("%d %d %d",&n,&p,&k);
    13     printf("%d
    ",n/k);
    14     
    15     queue<int> q;
    16     for(i=1;i<=n;i++)
    17         q.push(i);
    18     
    19     for(i=1; i<=n; i++)
    20     {
    21         if(i%k==0)
    22         {
    23             if(first)
    24             {
    25                 first = false;
    26                 printf("%d",q.front());
    27             }    
    28             else
    29                 printf(" %d",q.front());
    30         }
    31         q.pop();
    32         if(q.size()>p)//(q.size()>=p)
    33         {
    34             for(j=1;j<=p;j++)
    35             {
    36                 q.push(q.front());
    37                 q.pop();
    38             }
    39         }
    40     }
    41     
    42     return 0;
    43 }
  • 相关阅读:
    windows编程学习笔记
    自学JAVA-12:MySQL数据库
    自学JAVA-11:IO流
    自学JAVA-10:集合
    自学JAVA-9:基本类常用方法整理
    自学JAVA-8:异常
    自学JAVA-7:多态
    自学JAVA-6:继承
    自学JAVA-5:修饰符、对象初始化
    自学JAVA-4:方法、对象、类、属性
  • 原文地址:https://www.cnblogs.com/cbattle/p/7676011.html
Copyright © 2020-2023  润新知