用c++完成小张的工厂里的厂房受到台风的袭击,导致部分厂房的顶棚遭到了破坏,急需修理。厂房是由一间间的相同宽度的隔间组成,这些隔间都是连在一起的,连成了一条直线,隔间采用塑钢板作为顶棚,多个隔间口以共用一块长的塑钢板。这些隔间里有的有货物,有的没有货物,因为考虑到最近可能还会有台风,所以必须把有货物的隔间的顶棚修理好 目前塑钢板的供应商能提供的板材的数量有限制,但长度没有限制,所以小张只能尽量的减少板材的数量。请你帮助小张计算需要采购塑钢板的最小长度输入格式 第 1行: M,S 和 C(用空格分开)。M为能买到的板材的最大数目 (1<= M<=50),S为厂房总的隔间的数量,1<= S<=200,C为有货物的隔间的数量第2到 C+1行: 每行包含一个整数,表示有货物的隔间的编号。编号从1开始,1<= C<= S输出格式 输出一行,采购的塑钢板的总长度.
时间: 2023-02-16 21:37:37 浏览: 99
输入格式:
第 1 行:包含 3 个整数 M,S 和 C,用空格隔开。M 表示能买到的板材的最大数量(1<= M<=50),S 表示厂房总的隔间的数量(1<= S<=200),C 表示有货物的隔间的数量。
第 2 至 C+1 行:每行包含一个整数,表示有货物的隔间的编号。编号从 1 开始,1<= C<= S。
输出格式:
输出一行,表示采购的塑钢板的总长度。
示例:
输入:
3 6 3
1
3
4
输出:
5
解题思路:
对于这道题,我们可以使用贪心的思想来解决。
首先,我们要找到最大的连续的有货物的隔间。这样才能尽量减少板材的数量。
然后,我们把最大的连续的有货物的隔间分成若干个不超过 M 的长度的区间,这样就能满足题目要求了。
根据上面的思路,我们可以写出以下 C 语言代码:
#include <stdio.h>
int main()
{
int m, s, c;
scanf("%d%d%d", &m, &s, &c);
int start = 0, end = 0, max_length = 0;
int i;
for (i = 1; i <= c; i++)
{
int x;
scanf("%d", &x);
if (i == 1)
{
start = x;
end = x;
max_length = 1;
}
else
{
阅读全文