2016华为机试题:循环报数

来源:互联网 发布:卡巴斯基官网软件 编辑:程序博客网 时间:2024/05/01 22:19

问题描述:

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),
凡报到3的人退出圈子,问最后留下的是原来的第几号?

输入:2    输出:2

#include "stdafx.h"#include "iostream"#include "vector" //顺序容器using namespace std;void LastOne(int N){int i,j=0,count=0,n;n=N;    vector< vector<int> > a;vector<int>  b,c;    for(i=0;i<N;i++){b.push_back(i+1);//编号c.push_back(1);//在队列里的标志}a.push_back (b);a.push_back (c);while(n>1)  {i=j;if(j==N) {j=0;continue;}//实现循环报数if(a[1][i]==0) { j++;continue;}else{    count++; //报数    if(count==3){a[1][i]=0;//退出n--;//记录剩余人数count=0;    }}j++;}for(i=0;i<N;i++)if(a[1][i]==1)cout<<a[0][i]<<endl;}int _tmain(int argc, _TCHAR* argv[]){int N,i;cin>>N;LastOne(N);system("pause");return 0;}


0 0
原创粉丝点击