福大数据结构与算法实验题 4.2 Who is the strongest(链表实现)

原创 2013年12月03日 18:17:37
★实验任务
在神奇的魔法世界,召唤师召唤了一群的魁偶。这些魁偶排成一排,每个魁偶都有一个
战斗值。现在该召唤师有一个技能,该技能能对其中某个魁偶战斗值进行提高,增加的值为
排在该魁偶左边的战斗值大于它且离他最近的魁偶的战斗值(若该魁偶左边没有大于它的则
战斗值不变)。若有一排魁偶战斗值为 8 7 6 8 9 2 则对最后一个魁偶是用该技能的话则最
后一个魁偶战斗值变成 2+9=11。现在召唤师召唤了一排魁偶,从左到右战斗值都已知,召
唤师只能使用一次技能,现在让你进行选择其中一个魁偶使用技能,使得战斗值最大的魁偶
的战斗值最大。如上面一排魁偶战斗值为 8 7 6 8 9 2 若对第 3 个使用则最大为 13,对第
二个使用最大值为 15,所以最佳情况是对第二个魁偶使用该技能。
★数据输入
输入第一行为一个正整数 N (2 < N <= 100000), 表示有 N 个魁偶排成一列。
第 2 行 N 个整数。第 i 个整数 ai 表示第 i 个魁偶战斗值为 ai(0<ai<=1000000)。 ★数据输出
输出一行一个整数,表示最大战斗值。

输入示例

6
8 7 6 8 9 2

输出示例

15


该题可用双向链表解决,设置两个迭代器,一个往后依次遍历,一个从指定位置起往前查找


#include<iostream>
#include<list>
using namespace std;
int main()
{
	int m,n,max=0;
	cin>>n;
	list<int> L;
	list<int>::iterator iter1=L.begin(),iter2;   //声明两个迭代器
	for(int i=1;i<=n;i++)
	{
		cin>>m;     //将元素添加到链表尾部
		L.push_back(m);
	}
	iter1++;   //指向第二个元素
	for(i=2;i<=n;i++)
	{
		iter2=iter1;   //让iter2也指向同一个元素,然后依次往前查找
		while((*iter2)<=(*iter1)&&iter2!=L.end())
		{
			iter2--;
		}

		if(max<(*iter2+*iter1))    //判断最大值
			max=(*iter2+*iter1);
		iter1++;
	}
	cout<<max<<endl;
	return 0;
}
		


相关文章推荐

福大数据结构与算法实验题 Who is behind(双端队列)

★实验任务 开学了,有 N 个新生需要排成一列。这 N 个新生编号从 1 到 N,为了排队方便,按编号 从 1 到 N 顺序入队伍,起始队伍为空,每个人进队伍的选择有两种,一种是直接排在当前队 ...

数据结构实验一--单链表的基本操作的算法

1、 掌握单链表存储结构的类型定义; 2、 实现单链表各种基本运算的算法。 3、 实现单链表各种基本运算的算法以及改进实验代码。...

数据结构实验1---约瑟夫环(“链表”实现)

//改程序用来模拟约瑟夫环游戏,用户输入环中结点个数和初始的密码值 //先打印出产生的结点编号、密码信息,再依次打印出当前密码和出列者的编号 #include #include using names...

数据结构实验二--单链表的基本实现

数据结构实验二——单链表的基本实现 单链表的创建,插入数据,查找数据,删除数据。...

《算法与数据结构》实验课实验三思考题——有序链表插入元素——C语言

#include #include #define DATATYPE2 char #define MAXSIZE 100 typedef struct node{ DATATYPE2 data;...

数据结构:实验六(单循环链表实现链式队列)

单循环链表实现的链式队列,只设头指针,不设尾指针#include "LLQueue.h"int main() { LLQueue lq; QueueInit(&lq); for...
  • wxgxgp
  • wxgxgp
  • 2017年04月02日 18:05
  • 342

数据结构实验二——单链表的基本实现

数据结构实验二,单链表的基本实现 实现了单链表的创建,插入元素,删除元素,查找元素,显示的过程...

数据结构实验(一)——顺序表和单链表的设计与实现

顺序表和单链表的设计与实现
  • Anne999
  • Anne999
  • 2015年06月15日 15:08
  • 577

链表的应用(数据结构实验题)

题目:求相邻k个节点数值之和最大的第一节点 输入数据(设为整型)建立单链表,并求相邻k个节点data值之和为最大的第一节点。例如输入k = 2,数据为2 64 7 3 #(#为结束符),建立下面...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:福大数据结构与算法实验题 4.2 Who is the strongest(链表实现)
举报原因:
原因补充:

(最多只允许输入30个字)