用C++实现:数列下标

牛客网算法周周练15 题号A

题目描述:

给出一个数列 A,求出一个数列B.
其中Bi   表示 数列A中 Ai 右边第一个比 Ai 大的数的下标(从1开始计数),没有找到这一个下标  Bi 就为0,输出数列B
输入描述:
第一行1个数字 n (n ≤ 10000)
第二行n个数字第 i 个数字为 Ai (0 ≤ A≤ 1000000000)
输出描述:
一共一行,第i个数和第i+1个数中间用空格隔开
样例:
输入:
6
3 2 6 1 1 2
输出:
3 3 0 6 6 0
代码如下:
 1 #include<iostream>
 2 using namespace std;
 3 int main(void)
 4 {
 5     int n;
 6     cin>>n;
 7     int a[10000];
 8     for(int i=0;i<n;i++)
 9     {
10         cin>>a[i];
11     }
12     for(int i=0;i<n;i++)
13     {
14         for(int j=i+1;j<=n;j++)
15         {
16             if(i==n-1)
17             {
18                 cout<<0;
19                 return 0;
20             }
21             else
22             {
23                 if(a[j]>a[i])
24                 {
25                     cout<<j+1<<" ";
26                     break;
27                 }
28                 else if(a[j]<=a[i]&&j==n-1)
29                 {
30                     cout<<0<<" ";
31                     break;
32                 }
33                 else
34                 {
35                     continue;
36                 }
37             }
38         }
39     }
40     return 0;
41 }

思路:遍历数组a,逐个进行大小比较,注意数组不要越界。当数据比较到最后一个数的时候,因为右边已经没有数了,所以也就不可能有数比其大,所以直接输出0即可(后面不要带空格)。

posted @ 2020-07-14 23:37  神楽桜KaguraSakura  阅读(715)  评论(0)    收藏  举报