zoukankan      html  css  js  c++  java
  • A1056 Mice and Rice (25 分)

    根据题意作出思考如下图:

     

    可以发现,这个 fatest mouse 的筛选是一层一层下来的,每一层都将数组分为两部分——一部分继续下一轮筛选而另一部分执行记下排名就行。所以很自然能想到每一轮都会产生中间数据,这些中间数据需要变量记录下来,所以进一步思考如下图:

     

    遍历原数组,筛选出的下一轮数据保存到影子数组(中间数据),至于 loser 因为要记录排名所以也要保存下来——这里先随便用 vector 保存。可以用这个思路接着推演,最终得到的一个元素就是 fatest mouse。在这个过程中需要考虑 loser 的排名怎么记录比较方便,我这里是数 winers 有多少个,那么 loser 的排名就等于 winers 个数加一,如下图:

     

    综合上述思路,得到代码思路

    /* 伪码 */
    
    while (数组剩余长度不等于 1) {
        组 = 0; base = 0; end = 0;
        while (end < 数组剩余长度) {
            step = 数组剩余长度 - base < NG ? 数组剩余长度 - base : NG;
            end += step;
            sort(base, end, cmp);//cmp() 为递增序
            vector.push_back[base + 1, end);//将除最大值外其它元素追加到 vector
            max = 数组[base];
            数组[组++] = max;
            base = end;
        }
        func(vector 里所有元素名次 = 组 + 1);//这里就是将所有 loser 记下排名的处理步骤
        数组剩余长度 = 组;
        vector.clear();
    }

    点击获取完整代码

  • 相关阅读:
    MySQL临时表
    git开发常用命令
    PHP资源列表
    Golang学习--平滑重启
    Golang学习--TOML配置处理
    Golang学习--包管理工具glide
    Golang学习--开篇
    构建自己的PHP框架--构建模版引擎(3)
    构建自己的PHP框架--构建模版引擎(2)
    Laravel Session 遇到的坑
  • 原文地址:https://www.cnblogs.com/bEngi1/p/14375243.html
Copyright © 2011-2022 走看看