• 九度oj 题目1398:移动次数


    题目描述:

    众所周知JOBDU旗下的JOBBALA公司是一家以个性、亲民著称的IT公司。在JOBBALA公司成立50周年的日子里,公司CEO组织全体员工登山旅游。按照往常的习惯,导游通常要求游客按照身高从低到高的顺序排好,但是考虑这次JOBBALA人数太多,排序很耗时间。因此,导游想了想,要求JOBBALA的员工可以随便排,但是必须保证队列的第一个是队列中最矮的,队列的最后一个是队列中最高的。例如:队列 { 1, 4, 3, 2, 2, 5} 就是符合的队列,{1, 4, 2, 3, 2, 5}也符合,而{2, 1, 2, 3, 4, 5}就是错的。请问对于任意的队列,最少要两两交换多少次,可以让其符合导游的要求?

    输入:

    输入有多组测试案例,每个测试案例为2行。

    第一行包括一个整数n(2<=n<=200)表示人数,接下来一行包括n个整数a1, a2, …… an (1<=ai<=200) 表示n个员工初始的排列。

    输出:

    对应每个测试案例,按照导游的要求,输出最少需要两两交换的次数。

    样例输入:
    2
    89 88
    4
    55 88 1 2
    
    样例输出:
    1
    3
    
    提示:
    案例2中,最少需要移动三次:(55 88 1 2) -> (55 1 88 2) -> (1 55 88 2) -> (1 55 2 88)
     
     1 #include <cstdio>
     2 #include <cstdlib>
     3 #include <cstring>
     4 #include <string>
     5 #include <algorithm>
     6 
     7 
     8 int main(int argc, char const *argv[])
     9  {
    10      int n;
    11      while(scanf("%d",&n) != EOF) {
    12          int min, max;
    13          scanf("%d",&min);
    14          max = min;
    15          int mini = 0, maxi = 0;
    16          int temp;
    17          for(int i = 1; i < n; i++) {
    18              scanf("%d",&temp);
    19              if(min > temp) {
    20                  min = temp;
    21                  mini = i;
    22              }
    23              if(max <= temp) {
    24                  max = temp;
    25                  maxi = i;
    26              }
    27          }
    28          int ans;
    29          if(mini < maxi) {
    30              ans = mini + n - 1 - maxi;
    31          }
    32          else if(mini > maxi) {
    33              ans = mini + n - 1 - (maxi + 1);
    34          }
    35          printf("%d
    ", ans);
    36      }
    37      return 0;
    38  } 
  • 相关阅读:
    微信小程序从零开始开发步骤(三)
    微信小程序从零开始开发步骤(三)底部导航栏
    微信小程序从零开始开发步骤(二)
    微信小程序从零开始开发步骤(二)
    微信小程序从零开始开发步骤(一)
    [NOIP2016]组合数问题
    5.20 考试 20 未完
    lca 例题 WK
    rmq RMQ
    BZ
  • 原文地址:https://www.cnblogs.com/jasonJie/p/5725381.html
Copyright © 2020-2023  润新知