38 ремонта стойло

38  ремонта стойло

Автор:  хое Ограничение по времени:  1S разделы:  один одномерный массив

Описание проблемы:

В штормовую ночь, фермер Джон крыша из стойла, дверь сдулся. К счастью, много скота в отпуске, так что КПЗ ( коровник от общего числа S: 1 <= S <= 200) не жил. Остальной крупный рогатый скот толкаясь другого был помещен в стойлах подкладки крыши ночи. Таким образом , некоторые коровы коровы, некоторые нет.

Cowshed все имеют одинаковую ширину, а ширина устанавливается в 1. Потому что некоторые двери отсутствуют, Farmer John нужно создать новую доску, как дверь. Его новые поставщики древесины будет поставлять ему любую длину он хочет, но может обеспечить только ограниченное число поставщиков древесины. Фермер Джон хочет купить его древесину, чтобы минимизировать общую длину.

 

Расчет общей длиной минимально необходимое, чтобы остановить все доски в коровнике.

Минимальная общая длина выходной платы в качестве желаемого ответа.

 

Описание: доска остановилась длина, необходимая для коровы, корова остановилась три соседних досками необходимой длиной 3.

Например, коровы есть коровник номер:

3 5 8 10 11

И может использовать только два куска дерева,

Первый кусок дерева от 3 до 5, длина 3,

Вторая доска от 8 до 11, длина 4,

Таким образом, общая длина, необходимая для платы 7.

 

 

Введите описание:

Строка 1: М и С (разделенных пробелами)

С +-на вторую строку: Каждая строка содержит целое число, указывающее количество крупного рогатого скота, занятого амбар.

 

Где:

Это может быть коммерчески доступным древесины максимальное количество сетки: M (1 <= М < = 50);

Бычий расположено требуемое число С (1 <= С <= S),

После размещения хлева , где коровы номер stall_number (. 1 <= stall_number <= S) .

 

Выход Описание:

Она состоит из одной строки целое число требуется минимальная длина общей сложности доски

Входные данные Пример:

3 5
2
4
6
8
7

Пример вывода:

5

 

Проблема решения идеи :( жадная). не Начинаясь ни малейшего представления, или что есть плохие идеи. Индекс операции Насилие в массиве, чувство путают. Привычно открыт EXCEL таблицу, посмотрите на количество картин Фотографии,

См то, что закон не. В обоих случаях следует :()

 

 Таким образом, есть идея, предположит, с длинной доской, один раз заблокировал все двери. Легко рассчитать необходимую длину дерева. Тогда мы нашли между некоторыми стойла

Существует большой разрыв, это древесные отходы. Эти статистические данные из интервала, при условии запроса в соответствии с (максимум м определяется с использованием древесины, то есть удаляется до M-1 интервалов), жадный

Правило, первый интервал убывающего порядок, каждый интервал первого большого минуса, вы можете получить глобальное решение оптимальны.

 

Полный код:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <math.h>
 4 #include <string.h>
 5 #include <ctype.h>
 6 
 7 #define MAXNUM 205
 8 
 9 int rec[MAXNUM] = {0};
10 int interval[MAXNUM] ={0};
11 void mySort(int num[],int len);
12 
13 int main(){
14 
15     int m,c,i,j,n,temp;
16     scanf("%d %d",&m,&c);
17     for(i=0;i<c;i++){
18         scanf("%d",rec+i);
19     }
20     int len = c;
21     //牛棚编号排序
22     mySort(rec,len);
23 
24     int max = rec[len-1] - rec[0] + 1;
25     //最多找到m-1个距离不小于1的间隔,记录找到的间隔并排序
26     int len2=0;//记录数组的长度
27     for(i=1;i<len;i++){
28         temp = rec[i] - rec[i-1]-1;
29         if(temp>0){
30             interval[len2++] = temp;    
31         }
32     }
33     //对间间隔数组排序,排序结果是从小到大,我们要逆序利用
34     
35     mySort(interval,len2);
36     //printf("max= %d\n",max);
37     int count = m-1;//最多可以利用的间隔数
38     //计算最终结果
39     for(i=len2-1;i>=0&&count!=0;i--,count--){
40         max = max - interval[i];
41     }
42 
43     printf("%d\n",max);
44     return 0;
45 }
46 
47 void mySort(int num[],int len){
48     int temp,i,j;
49     for(i=len-2;i>=0;i--){
50         for(j=0;j<=i;j++){
51             if(num[j]>num[j+1]){
52                 temp = num[j];
53                 num[j] = num[j+1];
54                 num[j+1] = temp;
55             }
56         }
57     }
58 }

 

рекомендация

отwww.cnblogs.com/ManOK/p/12527016.html