本文共 1194 字,大约阅读时间需要 3 分钟。
题目:
先按大象的体重排序,然后用DP求出大象IQ的最长递减子序列。为了输出这个子序列,每次子序列扩容时使用一个Pre[]数组保存前一个元素的索引,将索引压栈后正序输出。
#include#include #include #include #include using namespace std;typedef struct elephant{ int weight; int iq; int index;}ElephantType;ElephantType Elephants[1001];int Length[1001];int Pre[1001];int compare(ElephantType a, ElephantType b){ if(a.weight < b.weight) return true; return false;}void lis(int n){ int idx; int MaxLength; memset(Length, 0, sizeof(int)*1001); memset(Pre, 0, sizeof(int)*1001); Length[1] = 1; for(int i=2; i<=n; i++) { MaxLength = 0; for(int j=1; j<=i-1; j++) { if(Elephants[j].iq > Elephants[i].iq && MaxLength < Length[j]) { MaxLength = Length[j]; Pre[i] = j; } Length[i] = MaxLength + 1; } } MaxLength = 0; for(int i=1; i
转载地址:http://hxnbb.baihongyu.com/