您的位置:首页 > 其它

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

2015-09-14 19:43 281 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息