ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

贪心算法(算法复习)

2021-11-12 20:31:21  阅读:147  来源: 互联网

标签:正整数 复习 int cout 石头 算法 include string 贪心


1.跳跳
描述
你是一只小跳蛙,你特别擅长在各种地方跳来跳去。

这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第 i 块的石头高度为 hi,地面的高度是 h0=0。你估计着,从第 i 块石头跳到第 j 块石头上耗费的体力值为 (hi-hj)^2,从地面跳到第 i 块石头耗费的体力值是 (hi)^2

为了给小 F 展现你超级跳的本领,你决定跳到每个石头上各一次,并最终停在任意一块石头上,并且小跳蛙想耗费尽可能多的体力值。

当然,你只是一只小跳蛙,你只会跳,不知道怎么跳才能让本领更充分地展现。

不过你有救啦!小 F 给你递来了一个写着 AK 的电脑,你可以使用计算机程序帮你解决这个问题,万能的计算机会告诉你怎么跳。

那就请你——会写代码的小跳蛙——写下这个程序。

输入
输入一行一个正整数 n,表示石头个数。
输入第二行 n 个正整数,表示第 i 块石头的高度 hi​。
输出
输出一行一个正整数,表示你可以耗费的体力值的最大值。

样例输入
2
2 1


3
6 3 5
样例输出
5


49

#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int main(){
	int a[333];
	int n,h=0;
	cin>>n;
	a[0]=0;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a,a+n+1);
	int i=0,j=n;
	while(i<j){
		h+=pow(a[i]-a[j],2);
		i++;
		h+=pow(a[i]-a[j],2);
		j--;
	}
	cout<<h;
	return 0;
} 

2.
描述
给出n个正整数,将他们排成一排组成一个最大的正整数。
n=3
13   342   313
34231313
n=4
7   23   567   8
8756723
设计解决这一问题的贪心策略。

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
/*最大*/
bool cmp1(string a,string b){
	return a+b>b+a;
}
/*最小*/ 
bool cmp2(string a,string b){
	return a+b<b+a;
}
int main(){
	string a[100000];
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	sort(a,a+n,cmp1);
	cout<<"Max=";
	for(int i=0;i<n;i++){
		cout<<a[i];
	}
	sort(a,a+n,cmp2);
	cout<<"\tMin=";
	for(int i=0;i<n;i++){
		cout<<a[i];
	}
	return 0;
} 

标签:正整数,复习,int,cout,石头,算法,include,string,贪心
来源: https://blog.csdn.net/SDAU_Ada/article/details/121294912

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有