• 约瑟夫问题(猴子选大王)


    #include <iostream>
    
    #define N 7//成员数目
    #define NEED_COUNT  3//出数组条件
    #define NEED_STAY  1//需要留下的个数
    
    using namespace std;
    
    int main()
    {
    	int index = 0;//索引,指向当前
    	int had_count = 0;//出数组条件	
    	int had_out = 0;//已经出数组的个数
    	
    
    	int name_array[N];//编号数组
    	int state_array[N];//出数组状态数组,在为0,出为1
    
    	int i;
    	//初始化
    	for(i=0; i<N; i++)
    	{
    		name_array[i] = i+1;
    		state_array[i] = 0;
    	}
    
    	//开始执行,条件是看最后一个编号是多少
    	while(had_out < N - NEED_STAY)
    	{
    		for(index = 0; index < N && had_out < N - NEED_STAY; index++)
    		{
    			if(state_array[index])//是1跳过
    				continue;
    			if(++had_count == NEED_COUNT)
    			{
    				state_array[index] = 1;//标记已经出数组了
    				had_out++;//出数组个数加1
    				had_count = 0;//将数数置为0
    			}
    		}
    	}
    
    	//输出数组,即可看出最后谁在数组里面
    	for(i=0; i<N; i++)
    	{
    		cout<<state_array[i]<<" ";
    	}
    	cout<<endl;
    
    	return 0;
    }


    以前写过约瑟夫问题的代码,要用的时候又找不到了,今天自己又写了一个,做了注释,作为笔记

    整体看需要两个数组,三个变量。

    一个数组(name_array)存放猴子的编号,一个数组(state_array)记录出圈子的猴子和在在圈子里面的猴子。

    三个变量有注释


  • 相关阅读:
    23种设计模式
    iOS中 判断对象类型的一些方法
    iOS 反射获取类的属性列表
    CATransition--(2)
    CATransition
    App Extension编程指南(iOS8/OS X v10.10):常见问题的处理方案
    触摸、手势与响应者链条
    NSTimer使用
    监控数据库运行
    MS AX 技术相关网站收藏
  • 原文地址:https://www.cnblogs.com/yan456jie/p/5369562.html
Copyright © 2020-2023  润新知