招银2018[编程题]寻找合法字符串

给出一个正整数n,请给出所有的包含n个‘(‘和n个‘)‘的字符串,使得‘(‘和‘)‘可以完全匹配。

例如:

‘(())()‘,‘()()()‘ 都是合法的;

‘())()(‘是不合法的。

#include <stdio.h>
#include <iostream>
using namespace std;

#define MAX   50
bool start = true;

//pos:       此时的位置下标
//NumPre:    剩余的左括号数目
//NumPost:  剩余的右括号数目
void helpCore(char *array, int pos, int NumPre, int NumPost) {

    if (NumPre > NumPost){ //剩余的左括号多余右括号,不满足
        return;
    }

    if (NumPre == 0){   //左括号用完,则放右括号至右括号完
        while (NumPost){
            array[pos++] = ‘)‘;
            NumPost--;
        }
        array[pos] = ‘\0‘;

        if (start) {
            printf("%s", array);
            start = false;
        }
        else
            printf(",%s", array);
    }
    else {
        if (NumPre == NumPost){
            array[pos] = ‘(‘;
            helpCore(array, pos + 1, NumPre - 1, NumPost);
        }
        else{ // NumPre <= NumPost
            array[pos] = ‘(‘;
            helpCore(array, pos + 1, NumPre - 1, NumPost);
            array[pos] = ‘)‘;
            helpCore(array, pos + 1, NumPre, NumPost - 1);
        }
    }

    return;

}

int main()
{
    char array[MAX] = {0};
    //memset(array, ‘0‘, sizeof(array));
    int n;
    cin >> n;
    helpCore(array, 0, n, n);

    return 0;
}

原文地址:https://www.cnblogs.com/wqpkita/p/9556692.html

时间: 2024-08-08 13:06:18

招银2018[编程题]寻找合法字符串的相关文章

招银2018[编程题]小招喵跑步

小招喵喜欢在数轴上跑来跑去,假设它现在站在点n处,它只会3种走法,分别是: 1.数轴上向前走一步,即n=n+1  2.数轴上向后走一步,即n=n-1  3.数轴上使劲跳跃到当前点的两倍,即n=2*n 现在小招喵在原点,即n=0,它想去点x处,快帮小招喵算算最快的走法需要多少步? #include <iostream> //#include <algorithm> using namespace std; #define min(a, b) (((a)<(b))?(a):(b)

POJ C++程序设计 编程题#4 字符串操作

编程题#4: 字符串操作 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 给定n个字符串(从1开始编号),每个字符串中的字符位置从0开始编号,长度为1-500,现有如下若干操作: copy N X L:取出第N个字符串第X个字符开始的长度为L的字符串. add S1 S2:判断S1,S2是否为0-99999之间的整数,若是则将其转化为整数做加法,若不是,则作字符串加法,返回

360春招技术岗编程题

360公司 2018校招 技术综合G卷在线考试编程题| 30.0分3/3[本题为选答题]奇异 长度(Web)时间限制:C/C++语言 1000MS:其他语言 3000MS内存限制:C/C++语言 65536KB:其他语言 589824KB 题目描述:给你一个图,0节点连接这一个联通块a,1节点连接着一个联通块b,ab仅由01这条边相连.现在我们定义奇异路径为恰好经过0-1这条边一次的路径,其他边可以经过任意次,且路径不带方向,1-2-3与3-2-1认为是两条路径.重边也算多条路.在这个图中有无数

网易2016 实习研发工程师 [编程题]寻找第K大 and leetcode 215. Kth Largest Element in an Array

传送门 有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数. 给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在. 测试样例: [1,3,5,2,2],5,3 返回:2 note: 注意手写快排的时候: while(i < j) { while(j > i && a[j] > a[left]) j--; while(i < j && a[i] <= a[left]) i++; if(i

美团2019秋招后台开发编程题题解

图的遍历 题目描述 给定一张包含N个点.N-1条边的无向连通图,节点从1到N编号,每条边的长度均为1.假设你从1号节点出发并打算遍历所有节点,那么总路程至少是多少? 输入 第一行包含一个整数N,1≤N≤105. 接下来N-1行,每行包含两个整数X和Y,表示X号节点和Y号节点之间有一条边,1≤X,Y≤N. 输出 输出总路程的最小值. 样例输入 4 1 2 1 3 3 4 样例输出 4 Hint 按1->2->1->3->4的路线遍历所有节点,总路程为4. 思路 遍历所有节点类似于深度

网易2017秋招编程题集合-牛客网

网易2017秋招编程题集合-牛客网 链接:https://www.nowcoder.com/questionTerminal/0147cbd790724bc9ae0b779aaf7c5b50来源:牛客网 如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列.例如: {1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列, {1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列. 现在给出一个数字序列,允许使用一

美团点评2017秋招笔试编程题

美团点评2017秋招笔试编程题 1, 大富翁游戏,玩家根据骰子的点数决定走的步数,即骰子点数为1时可以走一步,点数为2时可以走两步,点数为n时可以走n步.求玩家走到第n步(n<=骰子最大点数且是方法的唯一入参)时,总共有多少种投骰子的方法. 题解: 写出前面的几个, 1 -> 1;   2 -> 2 ;  3 -> 4;   4 -> 8; 5 -> 16; 6 -> 32; 可以得到是 二的 n-1 次幂. #include <cstdio> int

网易2017春招笔试真题编程题集合题解

01 双核处理 题目 一种双核CPU的两个核能够同时的处理任务,现在有n个已知数据量的任务需要交给CPU处理,假设已知CPU的每个核1秒可以处理1kb,每个核同时只能处理一项任务.n个任务可以按照任意顺序放入CPU进行处理,现在需要设计一个方案让CPU处理完这批任务所需的时间最少,求这个最小的时间. 输入描述 输入包括两行:第一行为整数n(1 ≤ n ≤ 50)第二行为n个整数lengthi,表示每个任务的长度为length[i]kb,每个数均为1024的倍数. 输出描述输出一个整数,表示最少需

2017年腾讯 秋招软件开发笔试编程题回忆版

2017年腾讯秋招软件开发笔试编程题回忆版 (所有题目大致描述如下,并非完整的题目回忆,但意思大致一样) 1.又一个魔法城市,城市里面有n个魔法城堡,序号为0,1,2...n-1:魔法城堡之间都有路径相连:魔法城堡两两之间的到达的距离不同,因此所需时间也可能不会相同.如魔法城堡0到魔法城堡2需要耗时4小时:现,小明想从魔法城堡0到魔法城堡1,他想知道需要花费多少时间:为了快速到达,有一魔法扫把,魔法扫把使用次数有限,使用一次,可以将某一段间的时间减半:求小明从魔法城堡0到魔法城堡1花费的最小时间