独木舟上的旅行

来源:互联网 发布:linux kvm命令 编辑:程序博客网 时间:2024/05/16 10:24

这里写图片描述

方法1:--------------------------------------------------------------------------------#include<stdio.h>int sum;              //计数void f(int *a, int w, int n){    int i = 0, j = 1, temp = 0, t, temp1, s;    for (i = 0; i < n; i++)    {        s = 0, temp1 = 0;        for (j = i + 1; j < n; j++)        {            if (a[i] + a[j] <= w && a[j] > temp1)  //寻找与a[i]相加最接近船承载量的数            {                t = j;                temp1 = a[t];                s = 1;            }        }        if(s == 1)  //判断是否可以两人同坐        {            temp = a[n - 1]; a[n - 1] = a[t]; a[t] = temp; //把运算过的元素替换到数组的后面去            n--;  //数组长度减1,去掉已经运算过的元素。        }        sum++;    }}int main(){    int s, w, i, n, a[300];    scanf("%d",&s);    while (s--)    {        sum = 0;        scanf("%d%d",&w, &n);        for (i = 0; i < n; i++)            scanf("%d",&a[i]);        f(a, w, n);        printf("%d\n",sum);    }    return 0;}--------------------------------------------------------------------------------方法2:--------------------------------------------------------------------------------#include <stdio.h>#include <stdlib.h>int sort(const void *a, const void *b){    return *(int *)a - *(int *)b;}int main(){    int n, sum;    scanf("%d",&n);    while (n--)    {        int count = 0, num;        scanf("%d%d",&sum,&num);        int arr[3000], i, j;        for(i = 0; i < num; i++)            scanf("%d",&arr[i]);   // 输入每个人的重量        qsort(arr, num, sizeof(int),sort);////      for (i = 0; i < num; i++)//          printf("%d ",arr[i]);//      printf("\n");        for (i = 0, j = num-1; i <= j;)  // 注意条件        {            if ( arr[i] + arr[j] <= sum )  // 能共坐            {                count++;                i++;                j--;            }            else if (i == j)       // 当还剩一个人的时候            {                count++;                break;            }            else             // 如果不能共坐            {                count++;                j--;            }        }        printf("%d\n",count);    }    return 0;}--------------------------------------------------------------------------------
原创粉丝点击