我个人觉得如果提示了要用机器学习模型,分训练和测试集,其实就是想利用model来discover这个问题的潜在的最优化pattern。我认为不应该是把女生分一半一半,而是应该假设一个n的值(这个值的大小应该只和最后算的精度有关)比如说n=1000(个女生),然后要写个算法随机生成1000个大小不一的值代表长度(这里可以做一下归一化,比如0-1之间不重复的值,按照题目给的“女生们手里都拿着长短不一的玫瑰花,无序地排成一排”来的)生成好的算一个sample,然后重复这一步骤随机生成很多sample构成dataset,再把这个dataset分割成training和testing set。 之后可以用一个sequential model 的神经网络来训练(比如说RNN,因为这个我觉得这个是time series data类型的prediction,也就是有点类似预测股票最高点)让这个网络输出尽量最大的值和那个值的序列是多少。label直接写个function就能算出来(最长的值和其对应的序列),loss可能要注意一下怎么才能很好的描述output和label的距离。我觉得可以试下Mean absolute error损失函数。以上并没有实际用代码做测试和验证,而且用的model也不一定就是最好的,有问题的话求指正。