HDU 1950 Bridging signals ( DP动态规划 O(n^2) )

#include <stdio.h>
#define MAX_POARTS 40000

int numOfTests;
int numOfPorts;
int arrayOfPorts[MAX_POARTS + 1];
//lenOfIS[index]表示遍历arrayOfPorts到索引index的时候,以arrayOfPorts[index]为"结尾"的递增子序列的长度
int lenOfIS[MAX_POARTS + 1];//length of increasing subsequence
int result;//length of increasing subsequence

int main(){

	scanf("%d", &numOfTests);
	int test;
	for (test = 1; test <= numOfTests; test++){
		scanf("%d", &numOfPorts);
		int indexOfPort;
		for (indexOfPort = 1; indexOfPort <= numOfPorts; indexOfPort++)
			scanf("%d", &arrayOfPorts[indexOfPort]);
		
		result = 0;
		for (indexOfPort = 1; indexOfPort <= numOfPorts; indexOfPort++){
			lenOfIS[indexOfPort] = 1;
			int indexOfBefore;
			for (indexOfBefore = 1; indexOfBefore < indexOfPort; indexOfBefore++)
				if (arrayOfPorts[indexOfBefore] < arrayOfPorts[indexOfPort] && lenOfIS[indexOfBefore] + 1 > lenOfIS[indexOfPort])
					lenOfIS[indexOfPort] = lenOfIS[indexOfBefore] + 1;
			if (lenOfIS[indexOfPort] > result)
				result = lenOfIS[indexOfPort];
		
		}

		printf("%d\n", result);
	}

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值