排隊遊戲(括號匹配問題2)

描述

在幼兒園中,老師安排小朋友做一個排隊的遊戲。首先老師精心的把數目相同的小男孩和小女孩編排在一個隊列中,每個小孩按其在隊列中的位置發給一個編號(編 號從0開始)。然後老師告訴小朋友們,站在前邊的小男孩可以和他後邊相鄰的小女孩手拉手離開隊列,剩餘的小朋友重新站攏,再按前後相鄰的小男孩小女孩手拉 手離開隊列遊戲,如此往復。由於教師精心的安排,恰好可以保證每兩個小朋友都能手拉手離開隊列,並且最後離開的兩個小朋友是編號最小的和最大的兩個小朋 友。(注:只有小男孩在前,小女孩在後,且他們兩之間沒有其他的小朋友,他們才能手拉手離開隊列)。請根據老師的排隊,按小女孩編號從小到大的順序,給出 所有手拉手離開隊列的小男孩和小女孩的編號對。

輸入 用一個字符串代表小朋友隊列。字符串中只會出現兩個字符,分別代表小男孩和小女孩,首先出現的字符代表小男孩,另一個字符代表小女孩。小孩總數不超過100 輸出 按小女孩編號順序,順序輸出手拉手離開隊列的小男孩和小女孩的編號對,每行一對編號,編號之間用一個空格分隔。 樣例輸入
((()(())())(()))
樣例輸出
2 3
5 6
4 7
8 9
1 10
12 13
11 14

0 15

#include<stdio.h>
#include<string.h>
int main()
{
	int i,l,j,k;
	char a[1001],c;
	while(gets(a))
	{
		l=strlen(a);
		c=a[0];
		
		for(i=0;i<l;i++)
		{
			if(a[i]==' ')
				continue;
		    if(a[i]!=c)
			{
				for(j=i-1;;j--)
				{
					if(a[j]==c)
					{
						printf("%d %d\n",j,i);
						a[j]=a[i]==' ';
						break;
					}
				}
			}
		}
	}
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章