给专家分配作品

小陈小陈 小陈小陈     2022-09-20     626

关键词:

引言: 前些天项目里遇见一个需求, 给专家分配作品, 觉得还蛮有趣, 感兴趣的同学可以读下去, 阅读此文大概需要...(我也不知道几分钟...

 

1: 见图

这个需求是这样子的, 要给选中的专家分配作品, 有两种情况,

1: 每位专家部分作品, 也就是均分, 如果作品均分完还有余数, 则再继续分, 直至分完结束.

2: 每位专家评审所有作品, 也就是所有作品都会被每位专家评审.

 

因为存在一对多及多对多的关系, 首先要先建张表, 表里有三个字段, 主键id, 作品id, 专家id,  如下:

 

ok, 建好数据表之后我们暂时先看其中一种 "每位专家部分作品" ,

做这个每位专家部分作品前, 先来看以下代码,   "给老师分书":

    public function expertDistributionAction()
    {
        $book = [1,2,3,4,5,6,7,8,9,10,11,12,13,14];     //14本书
        $doc = 4;   //4个老师
        $arr = [];
        $z = (int)(count($book)/$doc);      //整数 3
        $y = count($book)%$doc;             //余数 2
        $un = [];

        //分配整数, 循环老师
        for ($i = 0 ; $i < $doc; $i++){

            for($j = 0; $j < $z ; $j++){
                $arr[$i]['book'][] = $book[$j];
                //把已经分配的数放入$un数组里
                array_push($un,$j);     //$un = [0,1,2];
            }

            //把已经分配的给unset掉
            for($d = 0; $d < count($un) ; $d++){
                unset($book[$un[$d]]);
            }

            //重建索引
            $book = array_values($book);            //$book = [4,5,---14]
        }

        //余数分配, 即每人一本
        for($i = 0; $i < $y ; $i++){        //$y = 2;
            $arr[$i]['book'][] = $book[$i];
        }

        return $arr;
    }

上面的注释已经写的蛮清楚, 这个分书的算法要注意的是以下几点:

1: 第一层是循环老师人数, 这个很关键

2: 分配完的书需要在数组里去掉

3: 去掉分配完的书后数组 "重建索引", 分完一个老师重建一次

 

了解分书的逻辑后就开始代码了    (未完待续...

 

如何给抖音视频选择配乐?音乐是抖音作品重要的组成部分

一个好的配乐对作品有着至关重要的作用,即使一个普通的视频,如果搭配了一个恰当的配乐,那么这个作品也会表现的非常好。在抖音上面我们应该都看到过这样的作品:只能简单的一个镜头,但是因为一个恰当的音乐,当两... 查看详情

Cilk中给线程分配任务,给NUMA节点分配线程

】Cilk中给线程分配任务,给NUMA节点分配线程【英文标题】:AssigningtaskstothreadsinCilkandassigningthreadstoNUMAnodes【发布时间】:2013-08-2504:18:55【问题描述】:例如,有三个线程。线程1被分配了任务1、2和3。线程2被分配了任务4、5和6。... 查看详情

将 at 标签分配给 Github Release 也会将其分配给 Commit

】将at标签分配给GithubRelease也会将其分配给Commit【英文标题】:WillassigningattagtoaGithubReleasealsoassignittotheCommit【发布时间】:2014-04-1321:59:57【问题描述】:假设指定的commit还没有标签,是否将at标签(例如v1.1.0)分配给Githubrelease也... 查看详情

跳出思维的“盒子”,聊聊rte应用创新大赛的那些作品

...圆满落幕。在今年的大赛中,来自行业中不同领域的专家参与了决赛评选,包括Linux中国技术社区技术负责人白宦成、声网Agora资深iOS开发工程师龚宇华、北京音视跳动首席架构师兼讲师李超、SegmentFault思否CTO祁宁、环信C... 查看详情

为啥可以将字符串分配给 char* 指针,但不能分配给 char[] 数组?

】为啥可以将字符串分配给char*指针,但不能分配给char[]数组?【英文标题】:Whycanastringbeassignedtoachar*pointer,butnottoachar[]array?为什么可以将字符串分配给char*指针,但不能分配给char[]数组?【发布时间】:2011-10-1119:34:42【问题描... 查看详情

将'\'分配给char [重复]

】将\\\'\\\\\\\'分配给char[重复]【英文标题】:Assign\'\\\'tochar[duplicate]将\'\\\'分配给char[重复]【发布时间】:2016-01-0613:01:43【问题描述】:如何将\'\\\'的值分配给字符变量?C++不将反斜杠识别为字符,并认为后面应该有一个\'t\'或\'... 查看详情

将标签分配给不同的组分配方案

】将标签分配给不同的组分配方案【英文标题】:Assigninglabelstodifferentgroupassignmentscenarios【发布时间】:2022-01-2406:11:26【问题描述】:我有一个data.frame将ids分配给groups。在最简单的情况下,每个id都被分配给不同的group:df1<-dat... 查看详情

为啥我收到“无法分配给操作员”错误?

】为啥我收到“无法分配给操作员”错误?【英文标题】:WhyIget\'can\'tassigntooperator\'error?为什么我收到“无法分配给操作员”错误?【发布时间】:2019-11-1121:52:48【问题描述】:当我尝试将LabelEncoder()分配给label_encoder时,出现错... 查看详情

微软最有价值专家简介

...术直通车”的公众号——techlnk,咨询关于微软最有价值专家的一些情况。在此“技术直通车”通过从微软最有价值专家(中国)项目组获取的官方信息,整理了一篇关于MicrosoftMVP的介绍奉献给大家。也作为给“技术直通车”的... 查看详情

给专家的一份:Plugable gwt module & CompileModule class & XXXX.gwtar file?

】给专家的一份:Plugablegwtmodule&CompileModuleclass&XXXX.gwtarfile?【英文标题】:onefortheexperts:Pluggablegwtmodule&CompileModuleclass&XXXX.gwtarfile?【发布时间】:2011-11-1120:10:47【问题描述】:专家问题:可插拔gwt模块&CompileModule类&... 查看详情

分配给 iphone sdk 中已分配的变量

】分配给iphonesdk中已分配的变量【英文标题】:allocatingtoalreadyallocatedvariableiniphonesdk【发布时间】:2012-02-0909:39:25【问题描述】:我想为我已经分配的变量分配内存。例如self.m_tabbarController=[[TabbarControlleralloc]init];我必须为上面的... 查看详情

快速通读《构建之法》后的疑问:

...作来完成一个或多个项目的,那么在团队项目的成员任务分配中,每个人的技术认识水平不同,虽说按各自的优势划分,但具体如何合理有效地分配给所有成员任务?2.在软件开发之前要做充分的软件需求分析,但在实际的开发... 查看详情

类型“XX”不可分配给类型“YY”。 'XX' 可分配给'YY' 类型的约束,但'YY' 可以被实例化

】类型“XX”不可分配给类型“YY”。\\\'XX\\\'可分配给\\\'YY\\\'类型的约束,但\\\'YY\\\'可以被实例化【英文标题】:Type\'XX\'isnotassignabletotype\'YY\'.\'XX\'isassignabletotheconstraintoftype\'YY\',but\'YY\'couldbeinstantiated类型“XX”不可分配给类型... 查看详情

如何将 UIBarButtonSystemItemAction 图标分配给 UIButton?

】如何将UIBarButtonSystemItemAction图标分配给UIButton?【英文标题】:HowcanIassigntheUIBarButtonSystemItemActionicontoaUIButton?【发布时间】:2010-02-0821:45:11【问题描述】:我在UITableViewCell中有一个UIButton,我想将标准的“操作”图标分配给这个... 查看详情

分配给运行 QFuture

】分配给运行QFuture【英文标题】:AssigningtorunningQFuture【发布时间】:2015-09-1618:15:14【问题描述】:我可以将另一个QFuture对象分配给已经运行的QFuture对象吗?如下例所示:QFuture<int>future=QtConcurrent::run(function);future=QtConcurrent::... 查看详情

分配给委托的通用方法

】分配给委托的通用方法【英文标题】:GenericMethodassignedtoDelegate【发布时间】:2013-12-2507:46:07【问题描述】:我对委托和通用方法有点困惑。是否可以将委托分配给具有泛型类型参数的方法?IE://Thisdoesn\'tallowmetopassagenericparamet... 查看详情

直接调用分配给对象属性的闭包

】直接调用分配给对象属性的闭包【英文标题】:Callingclosureassignedtoobjectpropertydirectly【发布时间】:2011-05-3022:29:51【问题描述】:我希望能够直接调用我分配给对象属性的闭包,而无需将闭包重新分配给变量然后调用它。这可... 查看详情

打字稿 - 字符串'不可分配给类型'FC

】打字稿-字符串\\\'不可分配给类型\\\'FC【英文标题】:Typescript-string\'isnotassignabletotype\'FC打字稿-字符串\'不可分配给类型\'FC【发布时间】:2021-11-1005:23:15【问题描述】:我遇到了错误Type\'(props:PropsWithChildren)=>string\'不可分配... 查看详情