用C++實現:數列下標

牛客網算法週週練15 題號A

題目描述:

給出一個數列 A,求出一個數列B.
其中B i   表示 數列A中 A i 右邊第一個比 A i 大的數的下標(從1開始計數),沒有找到這一個下標  Bi 就爲0,輸出數列B
輸入描述:
第一行1個數字 n (n ≤ 10000)
第二行n個數字第 i 個數字爲 A i (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便可(後面不要帶空格)。ios

相關文章
相關標籤/搜索