一道算法题引起的思考

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

优质文章

  • 一张黄图的故事
  • JavaSE练习项目-坦克大战
  • 我是菜鸟、我小试牛刀
  • linux指令太多记不住?小白看这篇就够了!

优质专栏

  • 数据库就该这样学
  • 爪哇外步篇

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

题目描述
  有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接口




一道算法题引起的思考

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

优质文章

  • 一张黄图的故事
  • JavaSE练习项目-坦克大战
  • 我是菜鸟、我小试牛刀
  • linux指令太多记不住?小白看这篇就够了!

优质专栏

  • 数据库就该这样学
  • 爪哇外步篇

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

题目描述
  有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接口