求解数字序列中最长非递增子序列,利用BP算法 代码如下: #include<stdio.h> int main() { int x[100]; int n; int i,j; int temp; int d[100]; int max=0; int index; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&x[i]); } for(i=0;i<n;i++) //初始化 d[i]=1; for(i=n-2;i>=0;i--) { for(j=i+1;j<n;j++) { if(x[j]<=x[i]&&d[i]<d[j]+1) //动态规划,j的值比i小,且更长 d[i]=d[j]+1; //更新最大值 } } for(i=0;i<n;i++) { if(d[i]>max) { max=d[i]; index=i; } } temp=max; printf("%d ",x[index]); for(i=index+1;i<n;i++) { if(x[i]<=x[index]&&d[i]+1==temp) { printf("%d ",x[i]); temp=d[i]; index=i; } } }