zoukankan      html  css  js  c++  java
  • 约瑟夫问题(猴子选大王)

    #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)记录出圈子的猴子和在在圈子里面的猴子。

    三个变量有注释


  • 相关阅读:
    微信小程序 功能函数 把数字1,2,3,4换成春,夏,秋,冬
    微信小程序组件 滚动导航
    微信小程序 功能函数 openid本地和网络请求
    微信小程序组件 自定义弹出框
    Log4j
    UTF-8 setup for workspace
    outlook preview setup
    eclipse 背景颜色
    sqldeveloper 英文设置
    shell spool
  • 原文地址:https://www.cnblogs.com/yan456jie/p/5369562.html
Copyright © 2011-2022 走看看