编程应用

试题描述:

x小兰的大学教授要求小兰实现一个算法,打印n对(n>=0)括号中的全部有效组合(即左右括号正确的配对)。

要求输入一个整数n,输出若干行,每一行一个有效组合。

请你帮小兰完成这个算法。


输入
整数N

输出
N行组合

示例输入
1
2
3
0

示例输出
()

()()
(())

((()))
(()())
(())()
()(())

()()()

#include <string>  
#include <iostream>  
using namespace std;  

void ArrayCount(int l,int r,int n,string s)  
{  
	if(r==n)  
	{  
		//num++;  
		cout<<s<<endl;  
		return;  
	}  
	if(r==l)  
	{  
		s.append("(");  
		l++;  
		ArrayCount(l,r,n,s);  
	}  
	else//r<l  
	{  
		if(l==n)  
		{  
			s.append(")");  
			r++;  
			ArrayCount(l,r,n,s);  
		}  
		else  
		{  
			s.append("(");  
			l++;  
			ArrayCount(l,r,n,s);  
			s.pop_back();  
			l--;  
			s.append(")");  
			r++;  
			ArrayCount(l,r,n,s);  
		}  

	}  
	return;  

}  
int main()  
{  
	//int num=0;  
	string s;  
	int n;
	int a[10];
	int i = 0;

	while (1)
	{
		cin>>n;
		if (n!=0)
		{
			a[i] = n;
			i++;
		}
		else
		{
			a[i] = 0;
			break;
		}
	}
	
	int j=0;
	while(a[j])
	{
		ArrayCount(0,0,a[j],s);
		cout<<endl;
		j++;
	}
	  
	//system("pause");
	return 1;  
}  




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值