首页 > 编程语言 >C++ 贪心算法

C++ 贪心算法

时间:2024-07-17 13:56:19浏览次数:20  
标签:int cin C++ 算法 最优 include 贪心

理解贪心算法

  • 贪心算法采用的是贪心策略
  • 在每一步中都采取最优解(局部最优解),以期望得到最终的全局最优解

例子在这里插入图片描述

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main(){
	int a[510] = {0}; // 表示每个人的打水时间的数组
	int r, n, s = 0; // 水龙头数r,人数n,总时间s
	cin >> n >> r;
	for(int i = 1; i <= n; i++){
		cin >> a[i];
	}
	sort(a+1, a+n+1); // 排序,将装水时间最小的排在前面
	// 从r+1个人开始,需要加上排队排队时间
	for(int i = 1; i <= n; i++){
		if(i >= r+1){
			a[i] = a[i] + a[i-r]; // 计算第r+1个人及其之后所有人的打水时间
		}
		s = s + a[i];
	}
	cout << s;
}

标签:int,cin,C++,算法,最优,include,贪心
From: https://blog.csdn.net/weixin_44601183/article/details/140492672

相关文章

  • c++零基础知识要点整理(2)
    基本数据类型1.整数类型(1)short(短整型):占2个字节:00;         取值范围:-2^15~2^15-1(2)int(基本整数型) :占4个字节:0000;       取值范围:-2^31~2^31-1(3)long(长整型):占4个字节:0000;          取值范围:-2^31~2^31-1(4)long......
  • C++ 智能指针动态内存简单测试
    代码示例,主要来自《C++Primer》,动态内存相关那章内容。#include<iostream>#include<memory>#include<string>namespace{//未初始化的智能指针,默认保存的空指针voiddef_null_sp_test();//不是唯一用户,复制一份新的考拷贝。voidsp_unique_copy_te......
  • 代码随想录算法训练营第26天 | 回溯02:39. 组合总和、40.组合总和II、131.分割回文串
    代码随想录算法训练营第26天|回溯02:39.组合总和、40.组合总和II、131.分割回文串组合总和https://leetcode.cn/problems/combination-sum/代码随想录https://programmercarl.com/0039.组合总和.html40.组合总和IIhttps://leetcode.cn/problems/combination-sum-ii/desc......
  • XX2104 培训【C++解决】
    描述某培训机构的学员有如下信息:姓名(字符串)年龄(周岁,整数)去年NOIP成绩(整数,且保证是5的倍数)经过为期一年的培训,所有同学的成绩都有所提高,提升了20%(当然NOIP满分是600分,不能超过这个得分)。输入学员信息,请设计一个结构体储存这些学生信息,并设计一个函数模拟培训......
  • C++第七弹 -- C/C++内存管理
    目录前言一.C/C++内存分布二.C语言中动态内存管理方式三.C++中动态内存管理四.operatornew与operatordelete函数五.new和delete的实现原理1.内置类型2.自定义类型六.定位new表达式(placement-new)七.常见面试题总结前言在C/C++编程中,内存管理是至关重要的......
  • C++(回调函数)
    目录1.使用函数指针2.使用函数对象(仿函数)3.使用std::function和std::bind4.小结回调函数是一种允许函数作为参数传递给另一个函数的机制。在C++中,回调函数常用于实现事件驱动编程、异步操作和可重用性等功能。C++中有多种实现回调函数的方法,包括使用函数指针、函数对象(仿函......
  • 代码随想录算法训练营第24天 |
    代码随想录算法训练营第24天|回溯基础理论、第77题.组合、216.组合总和III、回溯基础理论代码随想录https://programmercarl.com/回溯算法理论基础.html#题目分类第77题.组合https://leetcode.cn/problems/combinations/description/代码随想录https://programmercarl.c......
  • c++ Program to print pyramid pattern (打印金字塔图案的程序)
    编写程序打印由星星组成的金字塔图案 例子: 输入:n=6输出:    *    **    ***    ****    *****    ******     *****    ****    ***    **     *......
  • C/C++ 位运算注意事项
    在C/C++中使用位运算时,需要注意多个方面以确保代码的正确性和效率。以下是一些关键的注意事项:1.操作数类型整型数据:位运算符(如&、|、^、~、<<、>>)只能用于整型数据,包括带符号或无符号的char、short、int、long等类型。尝试对非整型数据(如float、double)进行位运算会导致编......
  • 归并排序--C++
        归并排序是建立在归并操作上的一种有效,稳定的排序算法,该算法是采“分而自治”用的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。​图片来源于网络核心代码:voidabc(intx[],intq,intp){if(q>=p)r......