直接从当前位置往后找第一个比当前位置大的数记录下标,然后输出就可以了.
下面是代码
#include<bits/stdc++.h> int dp[10005]; long long num[10005]; int n; int main(void) { int Max = 0; scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&num[i]); for(int i=0;i<n;i++) { dp[i] = 0; for(int j=i+1;j<n;j++) if(num[j] > num[i]) { dp[i] = j + 1; break; } } for(int i=0;i<n;i++) printf("%d ",dp[i]); return 0; }