ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

题目21

2022-07-17 16:38:43  阅读:190  来源: 互联网

标签:tem 题目 策略 list 消耗 用户 total 21


在通信系统中有一个常见的问题是对用户进行不同策略的调度

会得到不同系统消耗的性能

假设由N个待串行用户,每个用户可以使用A/B/C三种不同的调度策略

不同的策略会消耗不同的系统资源

请你根据如下规则进行用户调度

并返回总的消耗资源数

规则是:

相邻的用户不能使用相同的调度策略

例如:

第一个用户使用A策略

则第二个用户只能使用B和C策略

对单的用户而言,不同的调度策略对系统资源的消耗可以规划后抽象为数值

例如

某用户分别使用ABC策略的系统消耗,分别为15 8 17

每个用户依次选择当前所能选择的对系统资源消耗最少的策略,局部最优

如果有多个满足要求的策略,选最后一个

输入描述:

第一行表示用户个数N

接下来表示每一行表示一个用户分别使用三个策略的资源消耗

resA resB resC

输出描述:

最优策略组合下的总的系统消耗资源数 示例一:

输入:

3

15 8 17

12 20 9

11 7 5

输出: 24

说明:

1号用户使用B策略

2号用户使用C策略

3号用户使用B策略

系统资源消耗8+9+7

<?php
$n=fgets(STDIN);
$arr=[];
for($i=0;$i<$n;$i++){
    $arr[]=explode(' ',trim(fgets(STDIN)));
}
solution($arr);

function solution($arr)
{
    $pre=-1;//记录前一个值位置
    $total=0;
    for($i=0;$i<count($arr);$i++){
        $list=$arr[$i];
        $min=PHP_INT_MAX;
        if($i==0){
            for ($j=0;$j<3;$j++){
                if($min>=$list[$j]){
                    $min=$list[$j];
                    $pre=$j;
                }
            }
        }else{
            $tem=0;
            for($j=0;$j<3;$j++){
                if($j!=$pre&&$min>=$list[$j]){
                    $min=$list[$j];
                    $tem=$j;
                }
            }
            $pre=$tem;
        }
        $total+=$min;
    }
    echo $total;
}

//简化

function solution($arr)
{
    $pre=-1;//记录前一个值位置
    $total=0;
    for($i=0;$i<count($arr);$i++){
        $list=$arr[$i];
        $min=PHP_INT_MAX;
        $tem=0;
        for($j=0;$j<3;$j++){
            if($j!=$pre&&$min>=$list[$j]){
                $min=$list[$j];
                $tem=$j;
            }
        }
        $pre=$tem;
        $total+=$min;
    }
    echo $total;
}

 

标签:tem,题目,策略,list,消耗,用户,total,21
来源: https://www.cnblogs.com/weiguomiao/p/16487605.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有