This commit is contained in:
dengtongyu committed 2020-11-24 17:45:32 +08:00
1 parent 5cd551a08e
commit 40cde540d6
33 files changed
+547 -319

No files matched your search

@@ -1,9 +1,12 @@
---
title: 演唱会随机选座解题思路
tags: []
id: '346'
categories:
- - 分享
- 分享
tags:
- 随机选座
- 解题
- 思路
date: 2018-12-16 14:07:46
---
@@ -17,7 +20,8 @@ date: 2018-12-16 14:07:46
首先定义座位信息
```
```
let item = {
index: 0, //下标(索引)
group: 0, //分组
@@ -30,7 +34,8 @@ let item = {
把座位和排数用数组保存起来
```
```
let front = 2; //前排座位数
let back = 10; //后排座位数
let .gap = 2; //每行座位数差
@@ -61,7 +66,8 @@ for (let g = 0; g < this.group; g++) {
把符合条件的座位排数筛选出来(即有足够连号的空位的排数)
```
```
suitableRows(length) {//length为买票的张数
let haveSeatRows = [];
this.rows.forEach((list) => {
@@ -86,7 +92,8 @@ suitableRows(length) {//length为买票的张数
最后把从筛选出来的排数中选出座位
```
```
let index = Math.floor(Math.random() * haveSeats.length);
let places = this.selectPlace(haveSeats[index], length);
selectPlace(list, length) {
@@ -119,4 +126,4 @@ let places = this.selectPlace(haveSeats[index], length);
总结起来,基本思路就是把符合条件的行数收集起来,再从所有行数中随机选出一行,顺序出票,从而在均衡分布与高利用率之间取一个平衡点。
[demon实例,点击查看!](https://demo.dengtongyu.com/pages/20181112o4/)
[demon实例,点击查看!](https://demo.dengtongyu.com/pages/20181112o4/)