为了账号安全,请及时绑定邮箱和手机立即绑定

约瑟夫环问题注释和代码暂存

标签:
Java

package yuesefu.oneslide;

public class xuesefu {

/**
 * @param args
 * 约瑟夫环问题:
 *     求解类型:找到最后一个幸存者的原数组索引。
 *     也就是说有这样一份罪犯列表:
 *     {
 *     //tuple类型元素,找到幸存者的名字,这样我们可以通过原数组的索引找到这个名字
 *     [John smith,0]
 *     [Barry Alan,1]
 *     [michell white,2]
 *     
 *     }
 * 首先指定一个犯人,将其赋值于start。
 * 定义一个数组首先初始化为从1 2 3 ....count的数组,定义为con
 * 两条重要规则:
 *1. 数组的值记录的永远是犯人的原编号(第一个数组中的索引)
 *2. 数组的索引con1 con2永远记录犯人所报的数
 * 
 * 指定第一个开始报数的犯人的值为1,其索引为start-1
 *     con[start-1]=1
 *     假设获得死刑犯人敏感数为n,即是只要他报到n,那他就死定了,并作为下一个数组的头号节点,当下一个准死刑犯人找到
 *     他就会被干掉;
 *     作为数组头号节点的处理逻辑:
 *     第一次指定是特殊的,因为此犯人不执行死刑。但是第一次他是头号数组元素
 *        第一个准死刑犯人的索引:
 *             con[start-1+n-1]=con[start-n+1]
 *       创建一个新的数组con2,用第一个元素来代表准死刑犯人;
 *       此时应将start保存第一个准死刑犯人:start=start-n+1以便传入函数con1
 *       con2[0]=start
 *       con2[1]=start+1
 *       ...
 *       找到下一个准死刑犯人:
 *       
 *         con2[n]=start+n<count(犯人总数)
 *       如果start>count:
 *         
 *    
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub

}
int[] deal(int[] arr1,int count,int n,int start){
    //count是犯人数目,n是中奖死刑,规定arr1[0]为中死刑奖的犯人索引
    arr1[start-1]=1;//指定犯人的索引

    start=start+n-1;

    return arr1;
}
int[] con2(int[] arr2,int count,int n,int start){

    return arr2;    
}

}

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消