一道算法题引起的思考

大家好,我是一只学弱狗,记录学习的点点滴滴!

优质文章

优质专栏


  蓝桥杯马上就又开始了,赶紧准备准备以不至于被虐的太惨,从一个简单的算法题开始。

题目描述
  有n项任务,每项任务加工时间已知,从0时刻开始陆续安排到一台机器上加工,每个任务的完成时间是从0时刻到任务加工截止的时间,求总完成时间(所有任务完成时间之和)最短的安排方案。

#include <iostream>
//不解释
#include <algorithm>
//从文件中读取测试数据
#include <conio.h>
using namespace std;
#define N 101

//任务的个数
int n;

//从大到小排序 
int cmp(int a,int b){
    
    
	return a>b;
}

void process(int *data){
    
    
	//默认递增排序
	sort(data+1,data+n+1);
	//sort(data+1,data+n+1,cmp);
	//从大到小排序 
}

int main(){
    
    
	//从文件中读取数据
	freopen("调度问题.txt","r",stdin);
	cin>>n;
	int * times = new int[n+1];//各个任务的执行时间
	int sum = 0;
	for(int i=1;i<=n;i++) cin>>times[i];
	process(times);
	for(int i=1;i<=n;i++) cout<<times[i]<<" ";
	cout<<endl;	
	for(int i=1;i<=5;i++){
    
    
		for(int j=1;j<=i;j++){
    
    
			sum+= times[j];
		}
		cout<<"第"<<i<<"个任务:"<<sum<<endl; 
	}
	//内存空间释放 
	delete[] times;
	times = NULL;
	return 0;
}

  主要是看一下排序,我个人不喜欢用数组的第一个下标,所以在排序时不需要它,假设数组长度为6,则下标是0-5,不要下标0,所以需对数组索引从1-5进行排序,画一下,让自己注意下排序的索引,对1-5的元素排序,应该从data+1到data+5+1
在这里插入图片描述  sort的一个函数重载可以使用一个cmp方法来实现比较策略,是按照从大到小比较还是从小到大比较,这是如何实现的呢?哦,原来是一种设计模式,策略模式,我拿Java语言来说。
  在Java语言中,也有一个java.util.Comparator接口

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44486437/article/details/112546188