现在的位置: 首页 > 综合 > 正文

菜园四周种了n棵白菜,并按顺时针方向由1到n 编号,收割时,从编号1开始,按顺时针方向每隔两棵白菜收割一棵,直到全部收割完毕为止.按收割顺序列出白菜编号

2013年08月09日 ⁄ 综合 ⁄ 共 421字 ⁄ 字号 评论关闭

这里<算法分析与设计>中的一种算法题目:书中用数组来解决

代码:

#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]<<' ';
}

抱歉!评论已关闭.