0
点赞
收藏
分享

微信扫一扫

C++贪心算法

Go_Viola 2022-01-16 阅读 54

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

//Author:PanDaoxi
#include <iostream>
#include <algorithm>
using namespace std;
int w[1001];
int main(){
	int c,n; //c=袋子最大承重量 n=苹果数量
	cin>>c>>n;
	for(int i=0;i<n;i++) cin>>w[i];
	sort(w,w+n);
	int temp=0,ans=0;
	for(int i=0;i<n;i++){
		temp+=w[i];
		if(temp<=c) ans++;
		else break;
	} 
	cout<<ans<<endl;
	return 0;
} 

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

//Author:PanDaoxi
#include <iostream>
#include <algorithm>
using namespace std;
struct gudong{
	string name;
	double weight;
}; 
bool cmp(gudong a,gudong b){ //排序用的比较函数 
	return a.weight<b.weight;
} 
int main(){
	gudong w1[10001];
	int c,n;
	cin>>c>>n;
	for(int i=0;i<n;i++){
		cin>>w1[i].name>>w1[i].weight;
	}
	sort(w1+0,w1+n,cmp);
	int sum=0,count=0;
	for(int i=0;i<n;i++){
		sum+=w1[i].weight;
		if(sum<c) count++;
		else break;
	}
	for(int i=0;i<count;i++) cout<<w1[i].name<<" ";
	return 0;
}

(插个话,今天的百度网盘格外地块)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

//Author:PanDaoxi
#include <iostream>
using namespace std;
int main(){
	int n,a[101],s=0; //n=堆数 a=储存苹果重量 s记录苹果总重量 
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		s+=a[i];
	}
	//求出平均每堆的重量
	s/=n;
	int t=0; //移动次数
	for(int i=1;i<n;i++){
		if(a[i]!=s){
			t++; //需要移动一次 
			//a[i]需要(s-a[i])个苹果 
			a[i+1]=a[i+1]-s+a[i];
		}
	} 
	cout<<t<<endl;
	return 0;
} 

在这里插入图片描述

//Author:PanDaoxi
#include <iostream> 
using namespace std;
int main(){
	//n=苹果数量 m=袋子最大承重 ans=袋子数量 s=每袋所装数量 
	int n,m,x,s=0,ans=0;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>x;
		if(s+x<=m) s+=x; //可以装入
		else{
			ans++;
			s=x;
		} 
	}
	cout<<ans+1<<endl;
	return 0;
}

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

//Author:PanDaoxi
#include <iostream>
#include <algorithm>
using namespace std;
struct meeting{
	int st,en;
} a[10001];
bool cmp(meeting a,meeting b){
	return a.en<b.en;
} 
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i].st>>a[i].en;
	//按结束时间排序
	sort(a+1,a+n+1,cmp);
	int sum=1;
	int last=a[1].en;
	for(int i=1;i<=n;i++){
		if(a[i].st>last){
			sum++;
			last=a[i].en; //更新 
		}
	} 
	cout<<sum<<endl;
	return 0; 
}

在这里插入图片描述

//Author:PanDaoxi
#include <iostream>
using namespace std;
int main(){
	int n,m,sum=0;
	cin>>n;
	m=n;
	while(m>0){
		if(m>=20){
			m-=20;
			sum++;
		}
		else if(m>=10){
			m-=10;
			sum++;
		}
		else if(m>=5){
			m-=5;
			sum++;
		}
		else{
			sum+=m;
			m=0;
		}
	}
	cout<<sum<<endl;
	return 0;
} 
//Author:PanDaoxi
#include <iostream>
using namespace std;
int main(){
	int m[5]={20,10,5,1},n,count=0;
	cin>>n;
	for(int i=0;i<4;i++){
		while(n>=m[i]){
			n-=m[i];
			count++;
		}
	}
	cout<<count<<endl;
	return 0;
} 

在这里插入图片描述

//Author:PanDaoxi
#include <iostream>
using namespace std;
int main(){
	int n,m,a[21],sum=0;
	cin>>n>>m;
	for(int i=0;i<m;i++) cin>>a[i];
	for(int i=0;i<m;i++){
		while(n>=a[i]){
			n-=a[i];
			sum++;
		}
	}
	cout<<sum<<endl;
	return 0;
} 
举报

相关推荐

0 条评论