2016sdau课程练习专题一 1008 problemI
来源:互联网 发布:手机淘宝怎么改运费 编辑:程序博客网 时间:2024/06/05 10:47
1.题目编号
1001 problemB
2.简单题意
将木棍放在机器里处理,第一根需要一分钟,剩余的如果大于等于前边放入的长度和重量,就不用费时间,否则需要一分钟,计算给出一组数的最少时间.
3.解题思路
使用贪心算法来解本题,首先按照木棍长度和重量由小到大排列,然后比较不同的木棍长度,若后一个长度和重量都大于前一个则总时间不变否则加一分钟.
4.感想
关于贪心算法的一种实例,在定义排序时挺难的,并不好做
5.代码
#include<iostream>
#include<algorithm>
#include<cstring>
#define SIZE 5000
using namespace std;
struct wood
{
int l;
int w;
int flag;
}wod[SIZE];
bool cmp(wood a,wood b)
{
if(a.l==b.l) return a.w<b.w;
else if(a.l<b.l)return true;
else return false;
}
int main()
{
int T,J;
cin>>T;
for(J=0;J<T;J++)
{
int n;
cin>>n;
int time,length,weight;
memset(wod,0,sizeof(wod));
int a,b;
for(a=0;a<n;a++)
{
cin>>wod[a].l >>wod[a].w ;
}
sort(&wod[0],&wod[n],cmp);
wod[0].flag=1;
length=wod[0].l ;
weight=wod[0].w ;
time=1;
for(a=1;a<n;a++)
{
for(b=a;b<n;b++)
{
if(!wod[b].flag&&wod[b].l>=length&&wod[b].w>=weight)
{
length=wod[b].l;
weight=wod[b].w;
wod[b].flag = 1;
}
}
for(b=1;b<n;b++)
{
if(!wod[b].flag) break;
}
a=b;
if(a==n) break;
length=wod[a].l;
weight=wod[a].w;
wod[a].flag= 1;
time++;
}
cout<<time<<endl;
}
}
- 2016sdau课程练习专题一 1008 problemI
- 2016sdau课程练习专题二 1008
- 2016sdau课程练习专题三 1008
- 2016sdau课程练习专题三 1008
- 2016sdau课程练习专题一 1004 problemE
- 2016sdau课程练习专题一 1000 problemA
- 2016sdau课程练习专题一 1001 problemB
- 2016sdau课程练习专题一 1006 problemG
- 2016sdau课程练习专题一 1016 problemQ
- 2016sdau课程练习专题一 1012 problemM
- 2016sdau课程练习专题一 1005 problemF
- 2016sdau课程练习专题一 1013 problemN
- 2016SDAU课程练习一1008
- 2016sdau课程练习专题二 1001
- 2016sdau课程练习专题二 1002
- 2016sdau课程练习专题二 1003
- 2016sdau课程练习专题二 1017
- 2016sdau课程练习专题二 1004
- 腾讯前端面试
- 2016/3/27 - 记
- 正则表达式和Jquery
- EasyUI表单验证
- 浅谈属性动画的简单使用(一)
- 2016sdau课程练习专题一 1008 problemI
- iOS UIDocumentInteractionController 第三方打开详解
- Java开发微信公众号-接口测试帐号接口配置及Java源代码
- 用C语言写的一个小的银行管理程序
- 阿里2016实习offer五面经验与总结
- 【反省】还在犹豫什么?
- The imported target "Qt5::Core" references the file
- 第5周-项目1-三角形类锥形(1)
- 基于Java的IO流