区间删除

第四题:
给定一个长度为 n 的数组,每次操作可以将数组中不超过 k 个连续的数同时减一。

问最少需要多少次操作,才能让每个数都小于等于 0。

输入格式
第一行输入两个空格分隔的整数 n(1 ≤ n ≤ 100), K(1 ≤ K ≤ n)
第二行输入 n 个用空格分隔的整数 ai(-1000 ≤ ai ≤1000)

输出格式
输出一个整数,表示需要的最少操作次数

样例输入

4 3
1 2 3 4

样例输出

5

#include <iostream>
using namespace std; 
int main() {
	int n,k;
	cin>>n>>k;
	int a[100];
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	int sum=0;
	for(int i=0;i<n;i++)
	{
		sum=sum+a[i];  //累加计算次数  
		for(int j=i+1;j<i+k;j++)
		{
			if(a[i]>0)   //减去第一个不为0的数
			a[j]=a[j]-a[i];
		}
	}
	a[i] = 0;
	cout<<sum<<endl;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/wait_13/article/details/86544115