美文网首页
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实现约瑟夫环问题

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