程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 題目1126:打印極值點下標

題目1126:打印極值點下標

編輯:C++入門知識

題目1126:打印極值點下標


題目描述:

在一個整數數組上,對於下標為i的整數,如果它大於所有它相鄰的整數,
或者小於所有它相鄰的整數,則稱為該整數為一個極值點,極值點的下標就是i。

輸入:

每個案例的輸入如下:

有2×n+1行輸入:第一行是要處理的數組的個數n;
對其余2×n行,第一行是此數組的元素個數k(4 輸出:

每個案例輸出為n行:每行對應於相應數組的所有極值點下標值,下標值之間用空格分隔。

樣例輸入:
3
10
10 12 12 11 11 12 23 24 12 12
15
12 12 122 112 222 211 222 221 76 36 31 234 256 76 76 
15
12 14 122 112 222 222 222 221 76 36 31 234 256 76 73
樣例輸出:
0 7
2 3 4 5 6 10 12
0 2 3 10 12 14

 

C++代碼:

 

#include
#include
using namespace std;
int main()
{
        int n;
        while(cin >> n)
        {
                while(n--)
                {
                        int k,i;
                        cin >> k;
                        vector vv(k);
                        for(i = 0;i < k;i++) cin >> vv[i];
                        vector out;
                        out.reserve(k);
                        if(vv[0] < vv[1]||vv[0] > vv[1]) out.push_back(0);
                        for(i = 1;i <= k-2;i++)
                        {
                                if(vv[i] > vv[i-1]&&vv[i] > vv[i+1]) out.push_back(i);
                                if(vv[i] < vv[i-1]&&vv[i] < vv[i+1]) out.push_back(i);
                        }
                        if(vv[k-1] < vv[k-2]||vv[k-1] > vv[k-2]) out.push_back(k-1);
                        for(i = 0;i < out.size() - 1;i++) cout << out[i] << " ";
                        cout << out[i] << endl;
                }
        }
        return 0;
}
/**************************************************************
    Problem: 1126
    User: Carvin
    Language: C++
    Result: Accepted
    Time:40 ms
    Memory:1520 kb
****************************************************************/

很惡心的PE!

 

C++另一種思路:

 



#include
using namespace std;
 
void f(int a[],int n)
{
    int i=0;
    if(a[0]!=a[1])
        cout<<0;
    for(i=1;i
    {
        if((a[i]>a[i-1])&&(a[i]>a[i+1])||(a[i]
            cout<<" "<
    }//for
    if(a[n-1]!=a[n-2])
        cout<<" "<
    cout<
}
int main()
{
   int n;
   int a[100];
   int i,j,k;
   while(cin>>n)
   {
       for(i=0;i
       {
         cin>>k;
         for(j=0;j
         {
             cin>>a[j];
         }//for
         f(a,k);
       }//for
   }//while
   return 1;
}//main
/**************************************************************
    Problem: 1126
    User: Carvin
    Language: C++
    Result: Presentation Error
****************************************************************/


 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved