菜园四周种了n棵白菜,并按顺时针方向由1到n 编号,收割时,从编号1开始,按顺时针方向每隔两棵白菜收割一棵,直到全部收割完毕为止.按收割顺序列出白菜编号
2013-07-30 15:07
393 查看
这里<算法分析与设计>中的一种算法题目:书中用数组来解决
代码:
#include <iostream>
using std::cout;
void reap(int* Circle,int* result, int n)
{
int k = 3;//轮子
int s = n;//跟踪A数组的末尾
int j=0;//跟踪result数组末尾
while(j < n)//result数组如果填满,则出局顺序完成
{
int t = s; //t总是指向A末尾
s = 0;
for(int i = 0 ;i < t ;i++ )
{
if(--k != 0)
Circle[s++] = Circle[i];
else
{
result[j++] = Circle[i];
k=3;
}
}
}
}
void main()
{
int result[10]={0};
int Circle[10]={1,2,3,4,5,6,7,8,9,10};
reap(Circle,result,10);
for(int i=0;i<10;++i)
cout<<result[i]<<' ';
}
代码:
#include <iostream>
using std::cout;
void reap(int* Circle,int* result, int n)
{
int k = 3;//轮子
int s = n;//跟踪A数组的末尾
int j=0;//跟踪result数组末尾
while(j < n)//result数组如果填满,则出局顺序完成
{
int t = s; //t总是指向A末尾
s = 0;
for(int i = 0 ;i < t ;i++ )
{
if(--k != 0)
Circle[s++] = Circle[i];
else
{
result[j++] = Circle[i];
k=3;
}
}
}
}
void main()
{
int result[10]={0};
int Circle[10]={1,2,3,4,5,6,7,8,9,10};
reap(Circle,result,10);
for(int i=0;i<10;++i)
cout<<result[i]<<' ';
}
相关文章推荐
- 有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他下一个人重新开始1到m的报数,如此下去直到全部都出圈为止。现要求按出圈次序.给出n人的顺序表
- 面试题 设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数, 报数到第m个人, 此人出圈, 再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现
- 华为2013校招之哈工大威海 上机试题之一:报数问题:设有N 个人围坐一圈并按顺时针方向从1 到N 编号,从第S个人开始进行1 到M报数,报 数到第 M个人时,此人出圈,再从他的下一个人重新开始1 到 M的报数,如此进行下去直 到所有的人都出圈为止。现要打印出出圈次序。
- 设有n个人依围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列, …,如此反复到所有的人全部出列为止。设n个人的编号分别为 1, 2, …, n,打印出出
- 报数游戏 有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数, 直到最后剩下一个孩子为止。问剩下第几个孩子。
- 设有n个人依围成一圈,从第1个人开始报数,数到第m个人出 列,然后从出列的下一个人开始报数,数到第m个人又出列,…,如此反复到所 有的人全部出列为止。设n个人的编号分别为1,2,…,n,打印出出列的顺
- 当当笔试题(有n个人成一圈,顺序排号(编号为1到n),从第一个人开始报数1到3报数),凡报到3的人出圈子,从下个人开始继续报数,直到最后一个人,问最后留下在是第几号?)
- 汇编语言六 报数出列设有n(设为17)个人围坐在圆桌周围,按顺时针给他们编号(1,2,~~~,n),从第1个人开始顺时针方向+1报数,当报数到m(设为11)时,该人出列
- 有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,直到最后剩下一个孩子为止。问剩下第几个孩子。
- 用户输入M,N值 ,从1到N开始顺序循环数数,每数到M输出该值,直到全部输出
- * 假设有n个人围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人重新开始报数,数到第m个人又出列..... * 如此反复到所有人全部出列为止。设n个人的编号分别为1,2,3..
- 每日一小练——按字典顺序列出全部子集
- 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....直到剩下
- .用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。
- 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序(数组)
- C语言 约瑟夫圈问题:N个人围成一圈,从第一个人开始按顺序报数并编号1,2,3,……N,然后开始从第一个人转圈报数,凡是报到3的退出圈子。则剩下的最后一个人编号是多少。
- 有n个人围成一圈编号1~n,顺序排好,从第一个人开始1到3报数,凡是报到3的人退出圈子,C语言编程出圈顺序
- 三角螺旋阵 方阵的主对角线之上称为“上三角”。 请你设计一个用于填充n阶方阵的上三角区域的程序。填充的规则是:使用1,2,3….的自然数列,从左上角开始,按照顺时针方向螺旋填充。
- 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C/C++程序(链表)
- 汇编语言: 试编制一个程序:从键盘输入一行字符,要求第一个键入的字符必须是空格符,如不 是,则退出程序;如是,则开始接收键入的字符并顺序存放在首地址为buffer的缓冲区中(空 格符不存入),直到接收