最长平台问题
一个从小到大排列的数组,这个数组中的一个平台就是连续的一段值相同的元素。例如:122333445中22,333等都是平台,333为最长平台。试编写程序,
1)接收一个数组,把这个数组中的最长的平台找出来
2)指出最长平台的位置
3)编写一个程序,接收一个已经从小到大排好的数组,把所有的平台和他们的位置找出来
请:重点解答第三个问题,3Q!
/* ------------------------------------------------------ */ /* 最长平台的长度length */ /* ------------------------------------------------------ */ int longest_plateau(int x[], int n) { int length = 1; /* 平台长度大于等于1 */ int i; for (i = 1; i < n; i++) if (x[i] == x[i-length]) length++; return length; }2)指出最长平台的位置;长度最后一次增加的平台的第一个元素的位置就是最长平台的起始位置
/* ------------------------------------------------------ */ /* 最长平台的位置p */ /* ------------------------------------------------------ */ int longest_position(int x[], int n,int p) { int length = 1; /* 平台长度大于等于1 */ int i; for (i = 1; i < n; i++) if (x[i] == x[i-length]) {length++;p=i-length+1;} return p; }