• [华为]删数


    时间限制:1秒 空间限制:32768K 热度指数:25561
    本题知识点: 模拟

    题目描述

    有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。

    输入描述:
    每组数据为一行一个整数n(小于等于1000),为数组成员数,如果大于1000,则对a[999]进行计算。


    输出描述:
    一行输出最后一个被删掉的数的原始下标位置。

    输入例子:
    8

    输出例子:
    6
     1 #include<iostream>  
     2 #include<queue>  
     3 using namespace std;  
     4 
     5 int main()
     6     {
     7        int n;
     8        while(cin>>n)
     9            {
    10               if(n>1000)
    11                   n=1000;
    12               queue<int> dig_q;
    13               for(int i=0;i<n;++i)
    14                   {
    15                      dig_q.push(i);
    16                   
    17               }
    18               int count=0;
    19            while(dig_q.size()!=1)
    20            {
    21               if(count!=2)
    22                   {
    23                       int q_head=dig_q.front();
    24                       dig_q.pop();
    25                       dig_q.push(q_head);
    26                       count++;
    27                   
    28               }
    29            else{
    30                   dig_q.pop();
    31                   count=0;
    32               }
    33            }
    34            int res=dig_q.front();
    35            cout<<res<<endl;
    36               
    37        }
    38     return 0;
    39 }
  • 相关阅读:
    小程序登陆流程解析
    小程序连续点击bug解决
    小程序开发文本空格的添加
    微信小程序转支付宝小程序
    支付宝小程序开发入门
    微信小程序开发入门
    text属性
    小程序横向滚动
    will-change
    Docker 系列二(操作镜像).
  • 原文地址:https://www.cnblogs.com/bxyan/p/6928437.html
Copyright © 2020-2023  润新知