K11598 怪盗基德的滑翔翼

98 篇文章 1 订阅
81 篇文章 0 订阅

题目描述

怪盗基德偷走了一颗珍贵的钻石,不料却被柯南小朋友识破了伪装,而他的滑翔翼的动力装置也被柯南踢出的足球破坏了。不得已,怪盗基德只能操作受损的滑翔翼逃脱。

假设城市中一共有N幢建筑排成一条线,每幢建筑的高度各不相同。初始时,怪盗基德可以在任何一幢建筑的顶端。他可以选择一个方向逃跑,但是不能中途改变方向。因为滑翔翼动力装置受损,他只能往下滑行(即:只能从较高的建筑滑翔到较低的建筑)。他希望尽可能多地经过不同建筑的顶部,这样可以减缓下降时的冲击力,减少受伤的可能性。

请问,他最多可以经过多少幢不同建筑的顶部(包含初始时的建筑)?

输入格式

输入数据第一行是一个整数K(K < 100),代表有K组测试数据。
每组测试数据包含两行:第一行是一个整数N(N < 100),代表有N幢建筑。第二行包含N个不同的整数,每一个对应一幢建筑的高度h(0 < h < 10000),按照建筑的排列顺序给出。

输出格式

对于每一组测试数据,输出一行,包含一个整数,代表怪盗基德最多可以经过的建筑数量。

输入输出样例

输入样例1:
 
3
8
300 207 155 299 298 170 158 65
8
65 158 170 298 299 155 207 300
10
2 1 3 4 5 6 7 8 9 10
输出样例1:
 
6
6
9

【耗时限制】1000ms 【内存限制】64MB

//
//Created by Carlgood.
//
#include<iostream>
#include<cmath>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<sstream>
#define This_program_is_written_by_Carlgood 9876543210
using namespace std;
int a[110],dpl[110],dpr[110]; 
int main()
{
	int xxx;
	cin>>xxx;
	while(xxx--)
	{
		int n;
		cin>>n;
		for(int i=1;i<=n;i++)
		{
			cin>>a[i];
			dpl[i]=1;
			dpr[i]=1;
		}
		for(int i=2;i<=n;i++)
		{
			for(int j=1;j<i;j++)
			{
				if(a[i]>a[j])
				{
					dpl[i]=max(dpl[j]+1,dpl[i]);
				}
			}
		}
		for(int i=n;i>=1;i--)
		{
			for(int j=n;j>=i+1;j--)
			{
				if(a[i]>a[j])
				{
					dpr[i]=max(dpr[j]+1,dpr[i]);
				}
			}
		}
		int ans=0;
		for(int i=1;i<=n;i++)
		{
			ans=max(ans,max(dpl[i],dpr[i]));
		}
		cout<<ans<<endl;
	}
	return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于Java生成多个sheet的Excel文件,也可以使用Apache POI库来实现。下面是一个简单的示例代码,用于生成一个包含多个sheet页的Excel文件: ```java // 导入所需的包 import java.io.FileOutputStream; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelWriter { public static void main(String[] args) { try { // 创建一个Workbook对象,对应Excel文件 Workbook workbook = new XSSFWorkbook(); // 创建多个sheet页 for (int i = 1; i <= 3; i++) { Sheet sheet = workbook.createSheet("Sheet " + i); // 创建多行数据 for (int j = 0; j < 10; j++) { Row row = sheet.createRow(j); // 创建多列数据 for (int k = 0; k < 5; k++) { Cell cell = row.createCell(k); cell.setCellValue("Sheet " + i + " Row " + j + " Column " + k); } } } // 将Excel文件保存到磁盘上 FileOutputStream outputStream = new FileOutputStream("example.xlsx"); workbook.write(outputStream); outputStream.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在上面的代码中,我们首先创建一个`Workbook`对象,表示要生成的Excel文件,这里我们同样使用`XSSFWorkbook`,表示Excel 2007及以上版本的文件。然后使用`workbook.createSheet()`方法创建多个sheet页,使用`sheet.createRow()`方法创建多行数据,使用`row.createCell()`方法创建多列数据,并使用`cell.setCellValue()`方法为单元格设置值。 最后,将Excel文件保存到磁盘上,这里我们使用`FileOutputStream`对象将Excel文件写入磁盘。希望这可以帮助到您!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值