关闭

Actionscript 3.0实现的约瑟夫问题

标签: actionscriptfunction数据结构importclass测试
296人阅读 评论(0) 收藏 举报
分类:

问题:

设n个人围坐在一圆桌周围,依次编号为1,2,...,n,从第s个人从1开始依次报数,数到m的人出列,然后从出列的下一个人重新开始报数,数到m的人又出列,…,如此反复直到所有的人全部出列为止。对于任意给定的n,s和m,输出按出列次序得到的n个人员的序列。(数据结构问题,请分别用顺序表和链表解决此问题,并自编多组数据测试)

利用数组来解决这个问题主要是在一次报数的时候数组会越界,这时得接着前面编号,这样就相当玩组成一个环形纽带

下面是Actionscript 3.0里的代码:

package
{
	
	import flash.display.Sprite;
	
	public class Josephus extends Sprite
	{
		private var _initData:Array;
		private static var COUNT:int = 2;    //中间相隔几个数
		private static var TOTALNUMBER:int = 9;   //总共的人数,
		private static var START_NUMBER:int = 3;  //从第几号开始报数
		
		public function Josephus()
		{
			_initData = new Array();
			initData();
			showJosephus();
		}
		
		private function showJosephus():void
		{
			var temp:int = START_NUMBER;
			for(var i:int = 0 ;i<_initData.length-1;i++)
			{
				for(var j:int = 0 ; j<COUNT ; j++)
				{
					temp = temp%_initData.length;
					temp++;
				}
				temp = temp - 1;
				
				trace(_initData[temp]+"\n");
				_initData.splice(temp , 1);
				i--;
			}
			trace("最后剩下的人的编号是:"+_initData[0]);
		}
		
		private function initData():void
		{
			for(var i:int = 1;i<=TOTALNUMBER;i++)
			{
				_initData.push(i);
			}
		}
	}
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6886次
    • 积分:125
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:4篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论