1370 二級結構

來源:互聯網
上載者:User
描述

RNA 的二級結構描述的是堿基配對的情況,一種流行的表示方法是的點-括

號標記法(dot-bracket representation)。沒有配對的堿基用點表示,而配對的堿基

用一對括弧來表示。例如在下面的結構中:

( ( ( . . . . . ) ( . . . ) ) . . . . ( . . . ) . . . )

堿基1, 2, 3分別和堿基28, 15和9配對。

輸入

輸入資料第一行包含一個整數,表示有T組資料;

以下T行表示T組資料,對於每組測試資料:

輸入只包含一行,為一個點-括弧表示。每個字元均來自{'(', ')', '.'}。輸入不

含空格。輸入一定是匹配的。

輸出

對於每組測試資料:

輸出包含 L 行(其中L 是輸入串的長度),第i行包括一個數Pi,表示與第

i 個堿基配對的堿基序號。如果未配對,輸出0。

其中L不大於1000

範例輸入
1
((..).)

範例輸出

7
5
0
0
2
0
1

簡單的棧操作

#include <stdio.h>#include <string.h>char a[1001];int b[1001];int c[1001];main(){int number;int i;int length;int up1,up2,up3;scanf("%d",&number);while(number--){up1=up2=up3=0;scanf("%s",&a);length=strlen(a);for(i=0;i<length;i++){if(a[i]=='(')c[up2++]=i+1;if(a[i]==')'){ b[c[up2-1]]=i+1;b[i+1]=c[up2-1];up2--;}if(a[i]=='.'){b[i+1]=0;}}for(i=1;i<=length;i++)printf("%d\n",b[i]);}}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.