程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> poj 1064 Parencodings(模擬題)

poj 1064 Parencodings(模擬題)

編輯:C++入門知識

到這個時間,雖然不是很晚,但是挺累的,白天是在實訓,晚上要去准備考研!回來的時候把這個題目給寫了,現在得趕緊去睡覺了,明天還要早起打卡,唉!

算法的具體思想明天在實驗室的時候找個時間來寫!


[cpp]
#include <iostream>  
#include <stack>  
using namespace std; 
#define MAX 100  //整個的括號的長度不會超過50   
 
/*284K  0MS*/  
int main() 

    int t; 
    cin>>t; 
    while(t--) 
    { 
        int n; 
        cin>>n; 
        int *a=new int[n]; 
        for(int i=0;i<n;i++) 
           cin>>a[i]; 
        char str[MAX]; 
        int count=0; 
        int index=0; 
        for(int i=0;i<n;i++) 
        { 
            int j; 
            for(j=count;j<a[i];j++) 
                str[index++]='('; 
            str[index++]=')'; 
            count=a[i]; 
        } 
        str[index]='\0'; 
        int *b=new int[n]; 
        int p=0; 
        //堆棧操作  
        stack<char> store; 
        for(int i=0;i<index;i++) 
        { 
            if(str[i]=='(') 
              store.push('('); 
            else 
            {    
                int num=0; 
                while(store.top()!='(') 
                { 
                    num++; 
                    store.pop(); 
                }     
                num++; 
                b[p++]=num; 
                store.pop(); 
                for(int k=0;k<num;k++) 
                  store.push('*'); 
            }  
        } 
      
        for(int i=0;i<p-1;i++) 
           cout<<b[i]<<" "; 
        cout<<b[p-1]<<endl; 
        delete []b; 
        delete []a; 
    } 
     
    system("pause"); 
    return  0; 

#include <iostream>
#include <stack>
using namespace std;
#define MAX 100  //整個的括號的長度不會超過50

/*284K 0MS*/
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        cin>>n;
        int *a=new int[n];
        for(int i=0;i<n;i++)
           cin>>a[i];
        char str[MAX];
        int count=0;
        int index=0;
        for(int i=0;i<n;i++)
        {
            int j;
            for(j=count;j<a[i];j++)
                str[index++]='(';
            str[index++]=')';
            count=a[i];
        }
        str[index]='\0';
        int *b=new int[n];
        int p=0;
        //堆棧操作
        stack<char> store;
        for(int i=0;i<index;i++)
        {
            if(str[i]=='(')
              store.push('(');
            else
            {  
                int num=0;
                while(store.top()!='(')
                {
                    num++;
                    store.pop();
                }   
                num++;
                b[p++]=num;
                store.pop();
                for(int k=0;k<num;k++)
                  store.push('*');
            }
        }
    
        for(int i=0;i<p-1;i++)
           cout<<b[i]<<" ";
        cout<<b[p-1]<<endl;
        delete []b;
        delete []a;
    }
   
    system("pause");
    return  0;
}

 

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