熄灯问题
2015-11-16 14:41
225 查看
Description: 假设围绕着一个圆形舞台有N个彩灯,编号从0到N-1,1<=N<=50,为了配合演出效果需要进行花式熄灯。熄灯的规则是从第x号灯开始熄灭,然后向编号更大的方向数,每逢y个亮着的灯后灭掉当前数到的亮着的彩灯,直到灭完为止。注意N-1号灯与0号灯互为邻居,数到N-1号灯,下一个为0号灯。 输入:彩灯数量N,第一个灭灯的位置x,以及间隔y,使用空格间隔输入 输出:灭灯的顺序,一行内输出,使用空格间隔,最后一个输出的灯泡编号后面仍然有一个空格,全部输出完毕之后换行 样例: 输入: 10 2 3 输出: 2 5 8 1 6 0 7 4 9 3
分析:此题终点解决如何去除已经熄了的灯,然后是解决如何间隔d个灯熄灯。注意熄灯到最后的情况。
最后的几盏灯可以重复计数直到counter==gap为止!
关键在于,分析并理解清楚程序运行的过程,一步一步地求解。
#include<stdio.h> #define MAX 100 int main() { int lightNumber = 0; int gap = 0; int counter = 0; int offLight = 0; int isLight[MAX] = {0}; int currentPos = 0; scanf("%d %d %d", &lightNumber, ¤tPos, &gap); offLight = lightNumber; printf("%d ", currentPos); offLight--; isLight[currentPos] = 1; while (offLight > 0) { currentPos = (currentPos + 1) % lightNumber;// 递增! if (isLight[currentPos] == 0) counter++; //找到适当的间隔! if (counter == gap) { printf("%d ", currentPos); counter = 0; isLight[currentPos] = 1; offLight--; } } printf("\n"); return 0; }
相关文章推荐
- VS2012 ffmpeg 没有定义的lrint
- stl map一对多用法
- 15-11-16 Eclipse 操作菜单汉译之Source [源代码]
- C++ 拷贝构造函数和赋值构造函数机制详解
- qt中实现多窗口切换
- POJ 1050 JAVA
- vim命令学习一
- 完全理解Gson(1):简单入门
- select2 应用
- pyspark Python 连接 HBase thrift
- Tomcat 多应用共享session
- IOS修改webView背景透明以及IOS调用前台js的方法
- 优秀Python学习资源收集汇总(强烈推荐)
- 如何在 Linux 上使用 SSHfs 挂载一个远程文件系统
- win10 TH2秋季正式版更新怎么激活?
- Eclipse的快捷键
- Xcode7下添加pch文件
- android代码签名和混淆打包
- 保护自己
- LoadRunner通过webservice协议调用WSDL接口时,返回值不正确