zoukankan      html  css  js  c++  java
  • NYOJ 47过河问题

    主要思路:先排序。有两种可能是最小的情况,一种是让最小的去带着最大的过去,然后最小的再回来,还有一种就是先最小的和第二小的一块过去, 然后最小的回来,让最大的和第二大的过去,接着第二小的回来,第二小和最小的接着在过去,最小的接着回来,主要就是这两种,用的时候判断一下,接着的问题就是n是奇数还是偶数的问题

    排完序之后的a[0]最小, a[n-1]最大,第一种的时间为a[0] + a[n -1] + a[0] + a[n - 2];其中a[0]是最短的时间,a[n-1]是最大的时间,下面一样, 第二种的时间为a[n -1] + a[1] + a[1] + a[0];其中a[1]是第二小的时间。最后要判断是奇偶数,具体代码如下,代码上有注释:

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 int main()
     5 {
     6     int t, i, j, tmp, sum, index;
     7     scanf("%d", &t);
     8     while(t --)
     9     {
    10         int n, a[1001];
    11         scanf("%d", &n);
    12         for(i = 0; i < n; i ++)
    13         {
    14             scanf("%d", &a[i]);
    15         }
    16         for(i = 0; i < n - 1; i ++)//选择排序
    17         {
    18             index = i;
    19             for(j = i + 1; j < n; j ++)
    20                 if(a[index] > a[j])
    21                     index = j;
    22             tmp = a[index];
    23             a[index] = a[i];
    24             a[i] = tmp;
    25         }
    26         if(n <= 2)//如果n为1或者为2 的时候,只需要进行一次过桥,时间为最后一个人的
    27         {
    28             printf("%d
    ", a[n - 1]);
    29             continue;
    30         }
    31         sum = a[1];
    32         while(n > 3)//当n > 3的时候过桥时间有个规律,最短一共两种,一种是最短时间的那个人带着最长的那个过,然后自己再回来,还有就是先最长的两个过去,第二短的回来,第一第二短在过去,第一短再回来
    33         {
    34             if(a[0] + a[n - 1] + a[0] + a[n - 2] > a[n - 1] + a[1] + a[1] + a[0])//这里判断当用最小的运过去与普通方法运过去的大小
    35                 sum += a[n - 1] + a[1] + a[1] + a[0];
    36             else
    37                 sum += a[0] + a[n - 1] + a[0] + a[n - 2];
    38             n -= 2;//将n减少2,因为一次过去两个
    39         }
    40         if(n == 3)//这里判断有两个用途,一个实判断是否是奇数,就是最后还剩三个,还有就是刚开始是奇数的时候
    41             sum += a[2] + a[0];
    42         printf("%d
    ", sum);
    43     }
    44     return 0;
    45 }
  • 相关阅读:
    uva 10791 Minimum Sum LCM
    欧拉函数
    uva 10820 Send a Table
    本原勾股数组(PPT)
    uva 10003 Cutting Sticks
    生成随机数据
    uva 10759 Dice Throwing
    uva 106 Fermat vs. Pythagoras
    WPF 与 摄像头资料
    纠结于wpf 多国语言方案,希望各位指点
  • 原文地址:https://www.cnblogs.com/Howe-Young/p/3947509.html
Copyright © 2011-2022 走看看