luogu--约瑟夫 指针实现
来源:互联网 发布:杭州恩牛网络 上市 编辑:程序博客网 时间:2024/06/16 08:14
题目背景
约瑟夫是一个无聊的人!!!
题目描述
n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号.
输入输出格式
输入格式:n m
输出格式:出圈的编号
输入输出样例
输入样例#1:
10 3
输出样例#1:
3 6 9 2 7 1 8 5 10 4
说明
你猜,你猜,你猜猜猜......
猜不着吧,我也不告诉你!!!
用的是指针写的约瑟夫,简单的指向问题,指针移动停止的地方进行输出 并标记为0 ,k代表相隔几个输出一个元素,其中加了一个特判, 当n=0的时候,直接结束。代码如下:
#include<iostream>using namespace std;int main(){ int i,k,m,n,num[110],*p,c;// cout<<"input number of person:n="; cin>>n>>c; p=num; for(i=0;i<n;i++) { *(p+i)=i+1; // cout<<*(p+i)<<" "; }// cout<<endl; //cout<<"^^^^^^^^以上为指针所指向每个地址所赋的值^^^^^^^^^======================"<<endl; i=0;k=0;m=0; if(n==0) return 0; while(m<n-1) { // cout<<"以k来计数当到了k=c进行另一个条件,当前的k值:"<<k<<"++++++++++++++++++++++++++++++++"<<endl; if(*(p+i)!=0) k++; if(k==c) { cout<<*(p+i)<<" "; *(p+i)=0; k=0; //cout<<k<<"从新计数"<<endl; m++; // cout<<m<<"m为消掉的数 用作外循环的终止条件"<<endl; } i++; //是指针不断指向下一个值 if(i==n) //当i到n时将其返回0 从新进行向下搜寻 i=0; } while(*p==0) //用指针指向空间为0 来计数 直到不为0时便找到了最后一个没有被消掉的数 p++; cout<<*p<<endl;return 0;}
阅读全文
0 0
- luogu--约瑟夫 指针实现
- 约瑟夫环问题(结构体指针实现)
- 约瑟夫环问题(结构体指针实现)
- Luogu-p1996约瑟夫问题(循环队列)
- [静态指针] 约瑟夫问题
- 【约瑟夫】编程实现约瑟夫环
- 用指针解决约瑟夫问题
- 结构体指针实现插入排序和解决约瑟夫环问题
- C语言指针实现循环报数问题(简单约瑟夫环问题)
- 约瑟夫问题C++实现
- 约瑟夫问题C++实现
- “约瑟夫问题”实现代码
- 约瑟夫环(VC++实现)
- java实现约瑟夫环
- 数组实现约瑟夫环
- 约瑟夫环 php实现
- 约瑟夫问题的实现
- 约瑟夫问题程序实现
- 罗马数字转整形(LeetCode题目)
- 机房合作总结
- JavaScript中的子类和父类的继承
- 图形处理之Unity3DShader(一)Vertex and Fragment Shader
- 关于char和int之间的字符关系
- luogu--约瑟夫 指针实现
- 性能优化工具:LeakCanary、Analyze
- Ubuntu下软件安装
- java程序调用dll文件方法
- 单例类的总结
- JAVA WEB项目部署说明
- Oracle2
- Codeforces
- 面试-JAVA基础