Dart试写约瑟夫环问题
来源:
最近逛博客,看到有人说面试是遇到问约瑟夫环问题。。。
“约瑟夫”是谁?约瑟夫环又是什么鬼?于是不耻下问(不以不知道大家都知道的知识为耻-_-||)的我去百度了下;
哦,原来就是个一直转圈的丢手绢游戏。。。
正好最近在学习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("新一轮:
");}
else
position++;
}
print(list);
}
}
class Person {
String name;
int position;
bool killed;
Person(this.name, this.position, this.killed);
@override
String toString() {
return "
姓名:$name 位置$position 是否被杀:$killed";
}
}
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
i·Space !
喜欢就支持一下吧
打赏
微信
支付宝