Y


私信TA

用户名:dotcpp0736798

访问量:66

签 名:

等  级
排  名 7235
经  验 1310
参赛次数 2
文章发表 19
年  龄 0
在职情况 学生
学  校 广西外国语学院
专  业

  自我简介:

解题思路:看到大神写的不禁感叹! 我也是借鉴来的

                首先我们要把题目搞清楚,将各个对象用C++的语言描述

                n个人,首先应该想到数组,因为数组有小标好计数,还要是动态数组,因为数组的定义中[]内必须是常量而不是变量;

                1~3我们可以设置一个计数器,初始值为0,到第一个人手上才为1,第二个人手上为2,。。。以此类推

                对象想好了,我们来下语句

                想想要留下最后一个人,即执行n-1次,我们选用count()计数函数,头文件为#include<algorithm>  语法为count(a,b,ax)意思是计算a~b区间

                x出现的个数,循环条件为count(number.begin(),number.end(),0)!=number.size()-1

                计数器的设置,每个人都要记一次数记到3时,此人出局(即对应的数组元素为0,计数器重新计数;以此循环n-1次

                    

注意事项:

参考代码:

#include<iostream>

#include <vector>

#include<algorithm>

using namespace std;

int main()

{

    int n;

    cin>>n;

    vector<int> number;          //动态数组

    for(int i=0;i<n;i++)        //为数组添加1~n

    number.push_back(i+1);

    

    int inder=0;                //设置计数器

                                //循环至只留下一个数

    while(count(number.begin(),number.end(),0)!=number.size()-1){

        for(int i=0;i<n;i++){ 

            if(number[i]!=0) inder++;       //计数器开始计数

            

            if(inder==3){                   //当某个数(人)说到三时

                number[i]=0;                //出局,即设为0

                inder=0;                    //计数器重新计数

            }

        }

    }

    

    for(int i=0;i<n;i++){                   //最后输出没没出局的

        if(number[i]!=0) 

        cout<<number[i]<<endl;

    }

}


 

0.0分

0 人评分

  评论区

  • «
  • »