直接从当前位置往后找第一个比当前位置大的数记录下标,然后输出就可以了.
下面是代码
#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;
}
京公网安备 11010502036488号