美文网首页
Dart实现约瑟夫环问题

Dart实现约瑟夫环问题

作者: IT景隆 | 来源:发表于2020-12-29 08:49 被阅读0次

来源:

最近逛博客,看到有人说面试是遇到问约瑟夫环问题。。。

“约瑟夫”是谁?约瑟夫环又是什么鬼?于是不耻下问(不以不知道大家都知道的知识为耻-_-||)的我去百度了下;

哦,原来就是个一直转圈的丢手绢游戏。。。

正好最近在学习Flutter,于是就试着用Dart语言来写下这个东东

代码:

import 'package:flutter_test/flutter_test.dart';

/// 也可以使用命令来运行 flutter test test/counter_test.dart

void main() {
  // 单一的测试
  test("测试约瑟夫环问题", () {
    Joseph.circle();
  });
}

class Joseph {
  static void circle() {
    //初始化数据
    List<Person> list = new List();
    num totalPerson = 30;
    num startNum = 0;
    num count = 6;
    for (int i = 0; i < totalPerson; i++) {
      list.add(new Person("约瑟夫$i号", i + 1, false));
    }

    int position = 0, c = 0, k = 0;
    while (k < list.length) {
      if (!list[position].killed) {
        c++;
      }
      if (c == count) {
        list[position].killed = true;
        c = 0;
        k++;
        var name = list[position].name;
        var po = list[position].position;
        print("当前被杀$name 位于$po 号位置");
      }
      if (position >= list.length - 1){
        position = 0;
        print("新一轮:\n");}
      else
        position++;
    }
    print(list);
  }
}

class Person {
  String name;
  int position;
  bool killed;

  Person(this.name, this.position, this.killed);
  @override
  String toString() {
    return "\n 姓名:$name  位置$position  是否被杀:$killed";
  }
}

来源:IT景隆 http://www.itjl.top:90

相关文章

  • Dart实现约瑟夫环问题

    来源: 最近逛博客,看到有人说面试是遇到问约瑟夫环问题。。。 “约瑟夫”是谁?约瑟夫环又是什么鬼?于是不耻下问(不...

  • php实现约瑟夫环问题

    题目:一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数, ...

  • 约瑟夫环问题

    约瑟夫环问题约瑟夫环描述:约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围...

  • 约瑟夫环问题

    0~n-1个数排成环,每次从中删除第m个数字后,问最后剩下的数字是多少 思路:使用链表模拟环状结构,到达尾部时使其...

  • 约瑟夫环问题

    思路 递推,f(n)与f(n-1)的关系,已经f(1)已知,O(n)的复杂度求出结果。f(n) = (f(n-1)...

  • 约瑟夫环问题

    约瑟夫环:30个人(15个教徒和15个非教徒)坐船出海 船坏 需要把15个人扔到海里 其他人才能幸存 围成一圈从某...

  • 约瑟夫环问题

    参考文章 约瑟夫环之二(用递归的思想解决Josephus问题) 解释 解法 初始情况: 0, 1, 2 ........

  • 约瑟夫环问题

    问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编...

  • 约瑟夫环问题

    题目:一圈人围坐,以数字K位第一个个人,叫道 M 的人自动出列,请写出出列顺序 第一种方法:使用单项循环链表实现 ...

  • 约瑟夫环问题

    在刷leetCode 的时候碰到了以下问题:给定一个从1 到 n 排序的整数列表。首先,从左到右,从第一个数字开始...

网友评论

      本文标题:Dart实现约瑟夫环问题

      本文链接:https://www.haomeiwen.com/subject/hmtfoktx.html