poj 1068 Parencodings

解题思路:数值P出现位置有一个“)”,相邻两个数值之间的差n表示两者之间存在n个"(",我们仅需从当前位置开始统计,当"("等于“)”时,即找到与当前位置匹配的“(”:

Code:

1 #include<iostream>
2  using namespace std;
3 int main()
4 {
5 int p[25] = {0}, t, n, s, w, j, d;
6 cin >> t;
7 while(t--)
8 {
9 cin >> n >> p[1];
10 cout << "1";
11 for (int i = 2; i <= n; i++)
12 {
13 cin >> p[i];
14 s = 0, w = 0, j = i;
15 while(++s != 0)
16 {
17 d = p[j] - p[j - 1];
18 s -= d, w += d;
19 if (s <= 0)
20 {
21 w += s;
22 break;
23 }
24 j--;
25 }
26 cout << " " << w;
27 }
28 cout << endl;
29 }
30 return 0;
31 }

 

posted on 2010-10-29 09:53  ltang  阅读(348)  评论(0)    收藏  举报

导航