固定位数的全排列与括号匹配

来源:互联网 发布:sql语句获得正态分布 编辑:程序博客网 时间:2024/06/06 11:36

固定位数的全排列

void Perm(int* array, int size, int N){    if (N == size)    {        for (int i = 0; i < N; i++)            cout << array[i] << " ";        cout << endl;    }    else    {        for (int i = N; i < size; i++)        {            swap(array[i], array[N]);            Perm(array, size, N + 1);            swap(array[i], array[N]);        }    }}int main(){    int array[] = { 1, 2, 3, 4 };    Perm(array, sizeof(array) / sizeof(array[0]),2);    getchar();    return 0;}

括号匹配:

bool Isbracket(char c){    if (c == '(' || c == ')' || c == '[' || c == ']' || c == '{' || c == '}')        return true;    return false;}bool Matchbracket(char* array){    stack<char> s;    size_t size = strlen(array);    for (size_t i = 0; i < size; i++)    {        if (!Isbracket(array[i]))            continue;        if (array[i] == '(' || array[i] == '{' || array[i] == '[')        {            s.push(array[i]);            continue;        }        else        {            if (s.empty())            {                cout << "右括号多与左括号" << endl;                return false;            }            if (array[i] == ')'&&s.top() == '(' ||                array[i] == ']'&&s.top() == '[' ||                array[i] == '}'&&s.top() == '{')            {                s.pop();            }            else            {                cout << "括号不匹配" << endl;                return false;            }           }    }    if (s.empty())    {        cout << "括号匹配正确" << endl;        return true;    }    else    {        cout << "左括号多与右括号" << endl;        return false;    }   }int main(){    char* arr1 = "gao{[]()}";    char* arr2 = "{jia[sha}]";    char* arr3 = "(bi){haha";    char* arr4 = "bao(bao))";    Matchbracket(arr1);    Matchbracket(arr2);    Matchbracket(arr3);    Matchbracket(arr4);    getchar();    return 0;}

原创粉丝点击