解题思路:看到大神写的不禁感叹! 我也是借鉴来的
首先我们要把题目搞清楚,将各个对象用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 人评分
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:597 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:631 |
WU-陶陶摘苹果2 (C++代码)浏览:1006 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:584 |
IP判断 (C语言代码)浏览:811 |
DNA (C语言描述,蓝桥杯)浏览:1645 |
钟神赛车 (C语言代码)浏览:653 |
多输入输出练习2 (C语言代码)浏览:1694 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:823 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:608 |